| 
    
     |  | こんにちは。 
 コードにコメント付けてみます。
 あまり上手く説明できていないかもしれませんが。。。
 
 Sub test()
 
 Dim rngFind   As Range
 Dim rngLoop   As Range
 
 '1行目のA列から値が入っている最後の列までループ
 For Each rngLoop In Range("A1", Cells(Columns.Count).End(xlToLeft))
 Select Case rngLoop.Value
 Case "col1", "col3", "col4", "col8"   '←とりあえず 消したくない項目名を羅列
 
 'セルの値が、上の消したくない項目名に一致しない場合
 Case Else
 'Range型の変数に1行目のセルのRangeを格納
 If rngFind Is Nothing Then
 'まだ1つも消す項目を変数に格納していない場合は
 'ループしているセルの情報をそのまま変数に格納
 Set rngFind = rngLoop
 Else
 '既に消す項目を変数に格納している場合は
 'Unionを使って変数に格納
 Set rngFind = Union(rngFind, rngLoop)
 End If
 End Select
 Next rngLoop
 
 'rngFindが空でない場合は消差なければならない列がある
 If Not rngFind Is Nothing Then
 'EntireColumn を使って、rngFindに格納されたセルの列全体を削除
 rngFind.EntireColumn.Delete Shift:=xlToLeft
 '念の為オブジェクト変数を開放
 Set rngFind = Nothing
 End If
 
 End Sub
 
 
 |  |