
【質問】
以下コードは 1行目から最終行までのE列の値、あ、い、う、その他に
よって、各動作をする、マクロです
しかし、E列に エラーが発生した時に #DIV/0! 以下で止まります
当該事象を、止まらないように、進めたいです
なお、#DIV/0! 発生時は、以下の処理でOKです
逆に、なぜ、#DIV/0!発生時に、Case Elseに分類されないのでしょうか?
ご存じの方、宜しくお願いします
Case Else
Cells(i, "i") = Cells(i, "c")
【エラー】
実行時エラー13。型が一致しません
Case "あ"
【コード】
Sub sample()
i = 1
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
Do While i <= lastrow
Select Case Cells(i, "e")
Case "あ"
Cells(i, "i") = Cells(i, "c")
Case "い"
Cells(i, "i") = Cells(i, "c") & "-1"
Case "う"
Cells(i, "i") = Cells(i, "c") & "-2"
Case Else
Cells(i, "i") = Cells(i, "c")
End Select
' 行番号変数の値に1を加え、次の行に進む
i = i + 1
Loop
End Sub
No.1ベストアンサー
- 回答日時:
On Error Resume Next
を先頭に追加してください。エラーがあっても、無視して実行するようになります。
Sub sample()
On Error Resume Next
i = 1
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
・・以下省略・・・
No.3
- 回答日時:
セルの値がエラーの時は、それと文字列は比較できないというエラーなので、IsError関数でセルがエラーかどうかを事前に判断します。
エラー時のcell_eへの代入はelseに行く値なら何でも良いです。
(前略)
Do While i <= lastrow
If IsError(Cells(i, "e")) Then
cell_e = "エラー"
Else
cell_e = Cells(i, "e")
End If
Select Case cell_e
Case "あ"
(後略)
No.2
- 回答日時:
こんにちは
>止まらないように、進めたいです
実際に行おうとしている処理内容が不明ですが、ご提示のコードに関して言うならば、セル値をテキストで取得しておけば、セル値がエラー値の場合はご希望のように「Case Else」として処理されるようになります。
具体的には、
i = 1
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
Do While i <= lastrow
Select Case Cells(i, "e").Text '←ここを変更
---- 以下省略 -----
のようにしておけば処理できると思います。
>なぜ、#DIV/0!発生時に、Case Elseに分類されないのでしょうか?
発生しているのは、「13 型が一致しません」のエラーですよね?
原因は、処理振り分けのための比較時にエラーが発生しているので、振り分け先を判断できないためです。
処理を振り分ける前にエラーが発生しているので、その後の処理は中断されます。
VBAはとりあえず型宣言などなくても実行できますし、型変換も行ってくれるようなファジーな言語なので、そのあたりに起因すると言えるかもしれません。
(そのあたりを把握していれば、エラーを起こさなくてもすみます。)
例えば、
a = 100
b = "string"
If a = b Then MsgBox "○" Else MsgBox "×"
のようなコードでも、そのままエラーなく実行できますが、型宣言を入れて
Dim a As Long
Dim b As String
a = 100
b = "string"
If a = b Then MsgBox "○" Else MsgBox "×"
として実行すると、ご質問と同じエラーが発生します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Dir関数のDo Whileステートメントにおける1回目と2回目のファイル名の呼出し方法の違い
Excel(エクセル)
-
「テキストデータで送ってください」と指示があった場合
Access(アクセス)
-
【マクロ】宣言は、何のためにするんですか???しなくても、普通に動いしまうのはなぜ?
Excel(エクセル)
-
-
4
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
5
【関数】不規則な文章から●●-●●●●-●●●●-●形式の数字を抜きだしたい
Excel(エクセル)
-
6
【マクロ】変数に入れるコードを少しでも短くする為には?
Excel(エクセル)
-
7
勤怠表について ABS、TEXT関数の使い方について教えて下さい
Excel(エクセル)
-
8
【関数】=EXACT(a1,b1) a1とb1が空白の場合trueではなく、空白を返すには?
Excel(エクセル)
-
9
LibreOffice Clalc(またはエクセル)において日祝日の場合に1を返すプログラムは?
Excel(エクセル)
-
10
【関数】3つのセルの中で最新の結果(1番右のセルにデータあり)を表示する関数について
Excel(エクセル)
-
11
【マクロ】【画像あり】4つのファイルデータを別ブックの4つのシートへそれぞれコピーしたい
Excel(エクセル)
-
12
【マクロ】【画像あり】4つのファイルデータを1つのエクセルブックにある4つのシートへそれぞれコピー
Excel(エクセル)
-
13
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
14
【マクロ】3行に上から下に並んだ文字列を、単純に、逆に並び替えれますか?
Excel(エクセル)
-
15
エクセルの循環参照、?
Excel(エクセル)
-
16
【エクセル】期限アラートについて
Excel(エクセル)
-
17
【マクロ】【相談】Excelブックとマクロを早く動くようにする為には?
Excel(エクセル)
-
18
ワードで「 」(カギかっこ)の幅が大きい
Word(ワード)
-
19
DLLファイルの逆コンパイラについて詳しい方
C言語・C++・C#
-
20
エクセルで質問です。 ハイパーリンクで同ファイル内のページを指定した場合、他のパソコンに送ってもエラ
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー3001「引数が間違...
-
VBAがブレークモードになっ...
-
実行時エラー48発生時のDLL特定...
-
VBAで、定数式が必要ですのエラ...
-
EXCEL VBAマクロ中断でデバッグ...
-
ExcelVBA Range クラスの Page...
-
VBAでのエラー
-
なぜこんな初歩的なVBAのIf文で...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAでピボットテーブルの作成(...
-
【VBA-AC2000】カレントプロシ...
-
トランスポートレベルのエラー
-
実行時エラー -'-2147417848
-
エクセルVBAで以下のようなコー...
-
マクロについて教えてください...
-
Application.ActiveInspectorで...
-
マクロでオートシェイプ内の文...
-
EXCEL/VBAで、自分のPCだけエラ...
-
OLEDB.NETで接続できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
【マクロ】エラー【#DIV/0!】が...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
実行時エラー -'-2147417848
-
実行時エラー48発生時のDLL特定...
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー3001「引数が間違...
-
EXCEL/VBAで、自分のPCだけエラ...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAのエラー発生場所をメッセー...
-
ADODB.Streamを使用してUTF-8を...
-
【Excel VBA】マクロをボタンに...
-
OLEDB.NETで接続できない
-
なぜエラーになるのでしょうか...
-
INSERT INTOステートメント構文...
-
Outlook.ApplicationをCreateOb...
おすすめ情報