[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 実行エラー1004の回避』(ていすう)
お世話になります。 下記のコードで、「算式は残してハンド入力されたセルのみクリア」しようと思います。 (2つのエリア) 通常は問題ないのですが、エリア内にハンド入力されたセルがないと 実行エラー1004 該当するセルが見つかりません とエラーになります。 どのように回避すればいいのでしょうか?
Sub クリアー1() '入力値のみクリアー Application.ScreenUpdating = False Application.DisplayAlerts = False
Range("F6:AJ300").Select Selection.SpecialCells(xlCellTypeConstants, 23).Select Selection.ClearContents
Range("AS6:BW300").Select Selection.SpecialCells(xlCellTypeConstants, 23).Select Selection.ClearContents
Range("A1").Select
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
対応の方針としては2通り考えられて、
1) SpecialCellsでエラーがでても無視する → On Error Resume Next をつかう
または、
2) SpecialCellsでエラーが出ないようにする → 該当するセルが必ずあるようにしておく → 問題無いセルに事前に値をいれておく(どうせクリアされるから)
Range("AJ302").Value = "Dummy" Range("F6:AJ300,AJ302").SpecialCells(xlCellTypeConstants, 23).Clear (´・ω・`) 2022/03/10(木) 09:39
エラーの原因は既に理解されてると思うので↓のように該当するセルが無ければエラーを無視すればよいとおもいます。
Sub クリアー1_改造() On Error Resume Next ActiveSheet.Range("F6:AJ300,AS6:BW300").SpecialCells(xlCellTypeConstants, 23).ClearContents On Error GoTo 0 ActiveSheet.Range("A1").Select End Sub
(もこな2) 2022/03/10(木) 09:40
ダミーの手がありましたね。 これなら初心者でも分かります(^^;)。 プログラムの世界では常套手段なのでしょうか…。 早々のご回答ありがとうございました!
(ていすう) 2022/03/10(木) 10:27
>これなら初心者でも分かります(^^;)。 今回の場合、可読性の観点からいうと、 ・On Error Resume → コメントなしでも意味がわかる ・ダミーデータ入れる → コメントなしではエラー対策であることがわかりにくい ですね
>プログラムの世界では常套手段 と思いますが... 「無いとエラーになるなら、自前で置けばいいじゃない」という
ただし、多くの場債、ダミーかどうかの判定が必要なので一手間増えます。 今回の場合、問答無用でクリアなので、ダミーかどうかの判定の手間が不要でした (´・ω・`) 2022/03/10(木) 10:58
丁寧なフォローありがとうございます。
(ていすう) 2022/03/10(木) 11:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.