プロが教える店舗&オフィスのセキュリティ対策術

マクロ もし特定の列が無かったら、何もしないが、有った場合は、マクロを実行したいです。
Excel2003です。

Sub a5_Click()

Dim Koumoku(6) As String
Dim i As Long

Koumoku(0) = "日時"
: (省略)
Koumoku(6) = "submit2"

For i = 0 To 6
Cells.Select
Selection.Find(What:=Koumoku(i), MatchCase:=False).Select
Selection.EntireColumn.Delete Shift:=xlToLeft
Next i

と入力し、マクロを実行させています。
マクロを実行し、列を削除させてはいますが、再度マクロを実行すると、実行時エラーが表示されます。すでに、その列が無い為だと思いますが、
「「日時」という列が存在しなかった場合、何もしない
だけど、あったら‥‥先ほど書きましたマクロを実行させたいと思っていますが、そのコードをどう書いたら良いでしょうか?

A 回答 (2件)

Select は、この場合必要ありません。


Find メソッドは、あまり省略をしないほうがよいです。
Ubound を使って、上限のIndex を取るのが良いです。

'//
Sub a5_Click()
 
 Dim Koumoku(6) As String
 Dim i As Long
 Dim r As Range
 
 Koumoku(0) = "日時"
 '・
 '・
 '・
 Koumoku(6) = "submit2"
 
 For i = 0 To Ubound(Koumoku)
  Set r = Cells.Find(What:=Koumoku(i), MatchCase:=False)
  If Not r Is Nothing Then
   r.EntireColumn.Delete Shift:=xlToLeft
  End If
 Next i
End Sub
    • good
    • 0
この回答へのお礼

>Select は、この場合必要ありません。
そうだったのですか。

教えてくださったコードで無事出来ました。

こちらのコードのほうが分かりやすいですね。Selectに拘ってましたが、必要が無いと知りました。

ありがとうございました。

お礼日時:2010/06/09 14:16

Findの戻り値を使って存在有無の判断をします。


詳しくは参考URLでどうぞ。

参考URL:http://officetanaka.net/excel/vba/cell/cell11.htm
    • good
    • 0
この回答へのお礼

同じ現象のHPありがとうございました。

>失敗が許されない検索など、検索とは呼べません。
確かに・・・と納得です。

検索の型なども詳しく記載されていまして、大変参考になりました。

ありがとうございました。

お礼日時:2010/06/09 14:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!