
【質問】
以下コードは 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

- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (3件)
- 最新から表示
- 回答順に表示
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 "×"
として実行すると、ご質問と同じエラーが発生します。
No.1
- 回答日時:
On Error Resume Next
を先頭に追加してください。エラーがあっても、無視して実行するようになります。
Sub sample()
On Error Resume Next
i = 1
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
・・以下省略・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】エラー【#DIV/0!】が...
-
セルにぴったし写真を挿入
-
EXCELのVBAで複数のシートを追...
-
勤怠表について ABS、TEXT関数...
-
オートフィルターの絞込みをし...
-
エクセル画像(写真)挿入
-
【マクロ】【画像あり】関数が...
-
エクセルシートの見出しの文字...
-
【Officer360?Officer365?の...
-
Excelで4択問題を作成したい
-
エクセルの複雑なシフト表から...
-
空白のはずがSUBTOTAL関数でカ...
-
エクセル
-
グループごとの人数のカウント
-
グループごとの人数のカウント
-
エクセル GROUPBY関数について...
-
エクセルのリストについて
-
エクセルについて
-
グループごとの個数をカウント...
-
エクセルの関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報