プロが教えるわが家の防犯対策術!

vbaですが、F列に"XYZ"が含まれる行のみを選択したいのですが、コードはどのようになるのか教えて頂けませんか。。
行は最大300程度です。

A 回答 (3件)

No1です。


No1は破棄してください。該当データがないとき、エラーが発生します。
以下のマクロを標準モジュールへ登録してください。
Option Explicit
Public Sub XYZ選択()
Dim maxrow, row, lctr As Long
Dim drow As Range
Dim rg As String
maxrow = Cells(Rows.Count, "F").End(xlUp).row
lctr = 0
For row = 1 To maxrow
If InStr(Cells(row, "F").Value, "XYZ") > 0 Then
rg = row & ":" & row
If lctr = 0 Then
Set drow = Range(rg)
Else
Set drow = Union(drow, Range(rg))
End If
lctr = lctr + 1
End If
Next
If lctr = 0 Then
MsgBox ("該当データなし")
Else
drow.Select
End If
End Sub
    • good
    • 0

実際にやりたいことは《F列に"XYZ"が含まれる行のみを選択したい》のでしょうか。


仮に、F列を調べたら6行(23行目"XYZ"、24行目"GXYZ"、45行目"XYZZ"、123行目"XYZ"、132行目"345XYZ"、222行目"XXXYZZZ")があったとして、《この6行だけの全部の行を選択》するのがネライなのでしょうか。
選択したあとはどうするのですか。
https://oshiete.goo.ne.jp/qa/9693889.html
通常、excelでVBAを使う場合には、「Aをしたい」ために「Bをやりたい」、「Bを実現する」ために「まずCをしておく」というようなことをします。
ネライがちょっと違うと、VBAでやることは大きく違ってきます。
「特定の条件に該当する行を選択させる」ことの次に何をしたいのかも考えないと、選択しただけでは困ることも多くなると思います。
    • good
    • 0

以下のマクロを標準モジュールへ登録してください。


Option Explicit
Public Sub XYZ選択()
Dim maxrow, row, lctr As Long
Dim drow As Range
Dim rg As String
maxrow = Cells(Rows.Count, "F").End(xlUp).row
lctr = 0
For row = 1 To maxrow
If InStr(Cells(row, "F").Value, "XYZ") > 0 Then
rg = row & ":" & row
If lctr = 0 Then
Set drow = Range(rg)
Else
Set drow = Union(drow, Range(rg))
End If
lctr = lctr + 1
End If
Next
drow.Select
End Sub
    • good
    • 0

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