|
どもども
>
>On Error GoTo 0はエラーが発生した処理を中止して次の処理を実行する。
中止して・・・というか、無視して?
というか、
「On Error Resume Next」が、エラーが発生した場合もその次から処理を続行する・・・という命令です。
'==============================================
ヘルプより
On Error Resume Next
実行時エラーが発生してもプログラムを中断せず、エラーが発生したステートメントの次のステートメントから実行を継続します。オブジェクトを操作する場合は、On Error GoTo ステートメントではなく、このステートメントを使ってください。
On Error GoTo 0
現在のプロシージャに含まれる使用可能なエラー処理ルーチンを無効にします。
'==============================================
>ですから、次のif文を実行するはず、と考えました。
うんうん。
>そしてデバッグしたら、実行エラー:オブジェクトが必要です、と出て・・。
デバッグしたら・・の意味がいまいちわからんのですが・・・
(デバッグって「バグ」を取り除くって意味やで?)
次の
If Not r Is Nothing Then
で、エラーが出るのですが?
どう考えても、エラーが出そうな気はしないのですが・・・
↑の、条件文の意味わかってはります?
「Not r Is Nothing」・・・「r」が「Nothing」じゃない。
つまり、「r」に値が入ってるってことです。
もし、空白セルがなく、
On Errorでサンドイッチした
Set r = Worksheets("Sheet1").Range("AB3,AC3").SpecialCells(xlCellTypeBlanks)
で、入るべき該当セルがなくて、エラーが発生した場合、
「r」には何も入ってないまま、If文に突入するわけです。
その場合、「Not r Is Nothing」じゃないわけだから、
If文が通らなくて、そのまま、何事もなく終了♪
・・・に、なるはずなんやけど?
>On Error Resume Next
>Set r = Worksheets("Sheet1").Range("AB3,AC3").SpecialCells(xlCellTypeBlanks)
>On Error GoTo 0
>
ここで、こんなんいれたら、「r」に何のセルも入ってないから
「オブジェクトが必要です」って怒られるのは当然でっす!
>「r.SpecialCells (xlCellTypeBlanks)」
>
> If Not r Is Nothing Then
|
|