Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


27446 / 76738 ←次へ | 前へ→

【54611】Re:列の削除
発言  VBWASURETA  - 08/3/24(月) 10:55 -

引用なし
パスワード
   おはようございます。

この条件だと消されます。
簡単に解析してみますが、それ以降は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状態なので必ず条件内へ入ります。


以上で、簡単な解析になりますが、何故消えるかわかりましたか?

0 hits

【54604】列の削除 名無し 08/3/23(日) 21:58 質問
【54611】Re:列の削除 VBWASURETA 08/3/24(月) 10:55 発言
【54616】Re:列の削除 VBWASURETA 08/3/24(月) 11:53 発言
【54614】Re:列の削除 ひげくま 08/3/24(月) 11:06 発言

27446 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free