
【質問】
以下コードは 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(エクセル)
-
【関数】不規則な文章から●●-●●●●-●●●●-●形式の数字を抜きだしたい
Excel(エクセル)
-
勤怠表について ABS、TEXT関数の使い方について教えて下さい
Excel(エクセル)
-
-
4
【マクロ】【画像あり】4つのファイルデータを別ブックの4つのシートへそれぞれコピーしたい
Excel(エクセル)
-
5
「テキストデータで送ってください」と指示があった場合
Access(アクセス)
-
6
【マクロ】【画像あり】4つのファイルデータを1つのエクセルブックにある4つのシートへそれぞれコピー
Excel(エクセル)
-
7
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
8
【マクロ】宣言は、何のためにするんですか???しなくても、普通に動いしまうのはなぜ?
Excel(エクセル)
-
9
【マクロ】変数に入れるコードを少しでも短くする為には?
Excel(エクセル)
-
10
【マクロ】3行に上から下に並んだ文字列を、単純に、逆に並び替えれますか?
Excel(エクセル)
-
11
【エクセル】期限アラートについて
Excel(エクセル)
-
12
【マクロ】【画像あり】ファイル名を別名にて保存。元ファイルはゴミ箱へ移動⇒する方法について
Excel(エクセル)
-
13
【関数】=EXACT(a1,b1) a1とb1が空白の場合trueではなく、空白を返すには?
Excel(エクセル)
-
14
オートフィルターの絞込みをした場合、フィルターを設置していない隣の列も一緒に絞り込みされる?
Excel(エクセル)
-
15
EXCELのVBAで複数のシートを追加したいが1つしかできない
Excel(エクセル)
-
16
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
17
エクセルの循環参照、?
Excel(エクセル)
-
18
【マクロ】【相談】Excelブックとマクロを早く動くようにする為には?
Excel(エクセル)
-
19
DLLファイルの逆コンパイラについて詳しい方
C言語・C++・C#
-
20
ワードで「 」(カギかっこ)の幅が大きい
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
Excel VBA comboboxへの割り当て
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
【マクロ】エラー【#DIV/0!】が...
-
マクロについて教えてください...
-
実行時エラー -'-2147417848
-
なぜエラーになるのでしょうか...
-
VBAでのエラー
-
ExcelVBA Range クラスの Page...
-
VBAのグラフの設定について
-
VBAの実行時エラー91!どうしよ...
-
AccessVBAでExcelを起動し、罫...
-
Invalid procedure call or arg...
-
VBAで入力規則の設定がうまくい...
-
VBS実行時エラー オブジェクト...
-
OLEDB.NETで接続できない
-
Access:結果は出るがエラー
-
EXCEL VBAマクロ中断でデバッグ...
マンスリーランキングこのカテゴリの人気マンスリー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...
おすすめ情報