[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Findで複数の検索値を設定したい』(VBA初心者マン)
宜しくお願い致します。
Findを用いて複数の検索値を探し当てたいのですが、
一つの変数で実行できる方法はないでしょうか?
下記のように記載すると、当たり前ですが最後のDは見つけられるのですが、
A,B,Cを見つけてくれないです。
Dim FoundCell As Range Dim FirstAddress As String Set FoundCell = Range("H:H").Find("A") Set FoundCell = Range("H:H").Find("B") Set FoundCell = Range("H:H").Find("C") Set FoundCell = Range("H:H").Find("D")
If Not FoundCell Is Nothing Then FirstAddress = FoundCell.Address
Do If Not FoundCell.Offset(0, -5).Value Like "//*" Then 'FoundCellから5個左のセルに「//」が含まれない場合(*は0文字以上の文字列) FoundCell.Offset(0, -5).Value = "//" & FoundCell.Offset(0, -5).Value 'FoundCellから5個左のセルの文字列の前に「//」を追加する End If Set FoundCell = Range("H:H").FindNext(FoundCell) 'H列で最初のFoundCellの次のFoundCellを見つけ出す Loop Until FoundCell.Address = FirstAddress 'Do〜Loop:条件が満たされるまで上記処理を繰り返し行う。 '今回はFoundCellのセル番地とFirstAddress(H列の最初の読取終了)のセル番地が一致したところで繰り返し処理終了 End If
End Sub
出来れば変数を1つで複数の検索値を見つけられるとありがたいです。
どうぞ宜しくお願い致します。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
AND検索ですか? OR検索ですか? (OK) 2021/01/28(木) 10:23
変数を配列にすれば、一つの変数で行けると思いますが。 または配列の中身を取り出しながら変数に格納するとか。
見つかったセルも配列に格納すればいいと思います。 (OK) 2021/01/28(木) 10:30
お返事ありがとうございます。
OR検索です。
申し訳ありません、「変数を配列にする」の意味があまりわかっておりませんので、
少し自分で調べてみます。
ありがとうございます。
(VBA初心者マン) 2021/01/28(木) 10:53
複数の文字列をループします。 "A"を全部さがす→"B"を全部さがす→"C"を全部さがす ・・・ (´・ω・`) 2021/01/28(木) 11:53
その他として、WorkSheet関数を使う方法、
配列に代入して、片っ端から比較する方法を
使っています。
以下、参考にどうぞ。
Sub Sample() Dim findRange As Range Dim targetCell As Range Dim lastRow As Long Dim buf As Variant Dim p As Long Dim n As Long With ActiveSheet lastRow = .Cells(roes.Count, "H").End(xlUp).Row Set findRange = .Range("H1", .Cells(lastRow, "H")) End With
For Each buf In Array("A", "B", "C", "D") Do With Application n = .IfError(.Macth(buf, findRange, 0), 0) End With If n > 0 Then Set targetCell = findRange(n).Offset(0, -5) If Not targetCell.Value Like "//*" Then targetCell.Value = "//" & targetCell.Value End If If n < lastRow Then p = n + 1 Else p = lastRow End If Set findRange = ActiveSheet.Range(findRange(p), findRange(lastRow)) End If Loop While (n > 0) Next buf End Sub
(tkit) 2021/01/28(木) 14:13
参考まで。
Sub test() Dim i As Integer Dim moji(3) As String moji(0) = "A" moji(1) = "B" moji(2) = "C" moji(3) = "D" For i = 0 To UBound(moji) MsgBox moji(i) Next i End Sub
(OK) 2021/01/29(金) 21:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.