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

マクロで ”クライアント” や ”開始日” などの項目名を探しだし、
そこの列のみを削除したいのです。

どなかた教えて下さい~!

A 回答 (4件)

プロシージャの頭の方で、



Sheets().Select

と、全シートを選択しているようですが、Findメソッドは、アクティブシート(この場合は先頭のシート)にしか適用されません。
したがって、2枚目以降のシートでは削除されません。

全シートを行いたいのであれば、シートでループします。

Dim Koumoku(2) As String
Dim i As Long
Dim j As Long

Koumoku(0) = "クライアント"
Koumoku(1) = "代理店"
Koumoku(2) = "開始日"

For j = 1 To WorkSheets.Count
  WorkSheets(j).Select
  For i = 0 To 2
    Cells.Select
    Selection.Find(What:=Koumoku(i), MatchCase:=False).Select
    Selection.EntireColumn.Delete Shift:=xlToLeft
  Next i
Next j
    • good
    • 0

再びmaruru01です。



Findメソッドの引数"What"が検索する文字列です。
したがって3行を削除する項目分繰り返します。

Dim Koumoku(2) As String
Dim i As Long

Koumoku(0) = "クライアント"
Koumoku(1) = "代理店"
Koumoku(2) = "開始日"

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

この回答への補足

ご回答ありがとうございます。
早速以下のようにためしましたが、今度は”クライアント" の項目すら削除できなくなってしまいました。

以下のどちらがいけないのでしょうか?
教えていただけると幸いです。


Sub test1()
Sheets().Select
' Sheets("03年01月 ").Activate
Sheets().Copy
Sheets().Select
' Sheets("02年5月").Activate
Dim Koumoku(2) As String
Dim i As Long

Koumoku(0) = "クライアント"
Koumoku(1) = "代理店"
Koumoku(2) = "開始日"

For i = 0 To 2
Cells.Select
Selection.Find(What:=Koumoku(i), MatchCase:=False).Select
Selection.EntireColumn.Delete Shift:=xlToLeft
Next i
ActiveWindow.ScrollColumn = 1
ChDir "\\Venus\Sales\フォルダA"
ActiveWorkbook.SaveAs FileName:="\\Venus\Sales\フォルダA\pseat" _
& DatePart("yyyy", Date) & "年" _
& DatePart("m", Date) & "月" _
& DatePart("d", Date) & "日" _
& " .xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
'Sheets("02年10月").Select
End Sub

補足日時:2002/08/02 14:18
    • good
    • 0

Findを使った解答がでたので、幼稚ですが繰り返し法でやって見ました。

テスト済み。2行目に項目名があると仮定
しています。iの終わり値2はUBound(k)で置き換え可。
Sub test01()
k = Array("クライアント", "代理店", "2次店")
' MsgBox UBound(k)
For j = 1 To 99
If Cells(2, j) = "" Then Exit For
For i = 0 To 2
If Cells(2, j) = k(i) Then
' MsgBox Cells(2, j)
Columns(j).Delete Shift:=xlToLeft
End If
Next i
Next j
End Sub
上記ルーチンをCommandButtonなどのClickをイベントとして使う手もあるでしょう。
    • good
    • 0

こんにちは。

maruru01です。

アプリケーションとバージョンは何ですか?
そういう情報はちゃんと書きましょう。

とりあえず、Excel2000とします。

Cells.Select
Selection.Find(What:="クライアント", MatchCase:=False).Select
Selection.EntireColumn.Delete Shift:=xlToLeft

各メソッドや引数などはヘルプで確認して下さい。
なお、見つからなかった場合の対処はしてません。
また、探す文字列("クライアント")がいくつもある場合は、うまく動きません。

この回答への補足

早速のご回答、ありがとうございました!
バージョンは Excel97です。(すみません・・。)

補足というか、"クライアント”以外の”代理店”などを連続で指定する時は、

Cells.Select
Selection.Find(What:="クライアント", MatchCase:=False).Select
Selection.EntireColumn.Delete Shift:=xlToLeft

のどこに次の項目名である"代理店”を追加したらいいのでしょうか?

マクロ初心者で申し訳ないです。
教えて下さい。

ちなみに、見つからなかった場合の対処や、項目名がだぶる事はないので、
大丈夫です。

補足日時:2002/07/31 18:14
    • good
    • 0

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