| 
    
     |  | おはようございます。 
 この条件だと消されます。
 簡単に解析してみますが、それ以降はFindメソッドで調べてやってみて下さい。
 もう少し調べるようにしないと丸投げになりレスが付きにくくなりますから。
 
 
 > Dim intCol As Integer
 > Dim FR As Range
 > Dim rngDel As Range
 >
 > For intCol = 1 To Columns.Count
 >  On Error Resume Next
 >  Set FR = Columns(intCol).Cells.Find("山,谷,川", , xlValues, xlPart)
 >  On Error GoTo 0
 >  If FR Is Nothing Then
 >   If rngDel Is Nothing Then
 >    Set rngDel = Columns(intCol)
 >   Else
 >    Set rngDel = Union(rngDel, Columns(intCol))
 >   End If
 >  End If
 >  Set FR = Nothing
 > Next
 >
 >  If Not rngDel Is Nothing Then
 >    rngDel.EntireColumn.Delete Shift:=xlToLeft
 >    Set rngDel = Nothing
 >  End If
 
 で、というソースコードですよね?
 因みにシート上でCTRL+Fキーを押して出てきたダイアログの
 検索する文字列のテキストに同じ条件の「山,谷,川」入れてみて下さい。
 
 その部分が
 
 >  Set FR = Columns(intCol).Cells.Find("山,谷,川", , xlValues, xlPart)
 
 に相当します。
 因みにこの場合は1列全体選択でやってますね。
 
 次に以下の条件のところですが
 
 >  If FR Is Nothing Then
 
 検索で見つからなかった場合に入る条件です。
 上記のソースだと"山,谷,川"の文字列がない場合に入ります。
 因みに「*」はワイルドカード文字なので入力されているものが
 あればこの条件に入らないことになります。
 
 次に問題の条件ですが
 
 >   If rngDel Is Nothing Then
 
 rngDelの定義はあるものの実体(Set部分)がありませんよね?
 なので常にNothing状態なので必ず条件内へ入ります。
 
 
 以上で、簡単な解析になりますが、何故消えるかわかりましたか?
 
 
 |  |