- ベストアンサー
vbaで指定文字を含まない列を削除する方法
- vbaを使用して、指定文字を含まない列を削除する方法について教えてください。
- 現在、指定文字を含む列を削除するプログラムがありますが、それを指定文字を含まない列を削除するために変更したいです。
- 生かしているプログラムを修正することで、どのように指定文字を含まない列を削除することができるのでしょうか?教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何故、 >途中まで作ったこのプログラムを生かして という条件を付けておられるのか意味が解りません。 Findメソッドは使わずに例えば以下の様にされると良いと思います。 Private Sub CommandButton1_Click() Dim c As Range, myRange As Range With Sheets("Sheet1") Set myRange = .Range(Cells(5, 1), _ Cells(5, .Cells.SpecialCells(xlCellTypeLastCell).Column)) For Each c In myRange If Not c.Value Like "*あああ*" Then c.ClearContents Next c On Error Resume Next myRange.SpecialCells(xlCellTypeBlanks).EntireColumn.Delete On Error GoTo 0 End With End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問をもう少し丁寧にすること。 質問のコード例だと、見つかった行だけ削除しているのでは。 それなのに今回の質問では>含まない列を削除したいです、となっているが、列全体を削除してよいのか。 下記コメントを見てください。 「削除は終りの方(行か、列)から」のルールを使っている。 Not myselect Is Nothing の判定のやり方に注意。 たとえば Sub test01() Sheets("Sheet1").Select For c = 6 To 2 Step -1 Application.FindFormat.Clear Columns(c).Select MsgBox "AA" ’削除状況の確認。実際の場合はコメント化 Set myselect = Selection.Find(What:="あああ", LookAt:=xlPart) 'If myselect Is Nothing Then 'あああ が1セルも無ければ削除 If Not myselect Is Nothing Then 'あああ が1セルでもあれば削除 Columns(c).EntireColumn.Select Selection.Delete Shift:=xlLeft End If Next c End Sub ではどうか。 Application.ScreenUpdating=False、True などは入れること。