|
こんにちは。
コードにコメント付けてみます。
あまり上手く説明できていないかもしれませんが。。。
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
|
|