
No.2ベストアンサー
- 回答日時:
nk.knさんが書いたIf文は次のような意味ですよね。
If FoundCell Is Nothing Then
見つからなかった場合の処理
Else
見つかった場合の処理
End If
見つからなかった場合、その処理をスルーするのであれば、その処理を書かなければ良いだけです。こんな感じです。
If FoundCell Is Nothing Then
Else
見つかった場合の処理
End If
でも、普通は次のように書きますね。
If Not FoundCell Is Nothing Then
見つかった場合の処理
End If
No.4
- 回答日時:
他の方で解決策や解答を見出したならよいかと思いますが、
このようなコードが実際には出会わないですし、
>Set FoundCell = Range(”A:A”).Find(Cells(j.code).Row
ありえないですね。
j.codeという何か、j はオブジェクトで、Code がプロパティでしょうけれども、それほどにVBA(マクロではなくなります)組めるなら、また、別格だと思います。
>Find関数を使う時。。
FIND(検索文字列,対象,開始位置)
Find関数は、WorksheetFunction.Find(strText, Range("A1"))
ということになります。
では、Find メソッドならどうでしょうか。
二つ考えてみました。
1列に一つ見つければよいなら、TestFind1 でも良いと思います。
もし、複数列をさがすもくできなら、
Sub TestFind1()
Dim r As Range
Dim FoundCell As Range
Dim jCode As Variant
Dim i As Long
Dim flg As Boolean
i = 1
jCode = "H"
For Each r In Range("A1:H1")
Set FoundCell = r.EntireColumn.Find(jCode)
If Not FoundCell Is Nothing Then
Cells(i, 10).Value = FoundCell.Address(0, 0)
i = i + 1
End If
Next r
End Sub
'//
Sub TestFind2()
Dim FoundCell As Range
Dim jCode As Variant
Dim i As Long
Dim firstAdr As String
i = 1
jCode = "H"
Set FoundCell = Columns("A:H").Find(jCode, _
SearchOrder:=xlByColumns, _
LookAt:=xlWhole)
If Not FoundCell Is Nothing Then
firstAdr = FoundCell.Address(0, 0)
Do
Cells(i, 11).Value = FoundCell.Address(0, 0)
i = i + 1
Set FoundCell = Columns("A:H").FindNext(FoundCell)
If FoundCell.Address(0, 0) = firstAdr Then Exit Sub
Loop Until FoundCell Is Nothing
End If
End Sub
No.3
- 回答日時:
こんばんは!
横からお邪魔します。
No.1さんがおっしゃっているように
FindNextメソッドを利用するのが良いのでは?
↓のような感じになると思います。
Dim FoundCell As Range, FirstCell As Range
Set FoundCell = Range("A:A").Find(what:="検索データ", LookIn:=xlValues, lookat:=xlWhole)
If Not FoundCell Is Nothing Then
Set FirstCell = FoundCell
'処理
Do
Set FoundCell = Range("A:A").FindNext(after:=FoundCell)
If FoundCell.Address = FirstCell.Address Then Exit Do
'処理
Loop
End If
※ No.1さんも書かれているように
>Set FoundCell = Range(”A:A”).Find(Cells(j.code).Row
がイマイチ判らないので、とりあえず「検索データ」は完全一致としています。m(_ _)m
No.1
- 回答日時:
こんにちは
>Set FoundCell = Range(”A:A”).Find(Cells(j.code).Row
書式があってないのか、行が途中で切れてしまっているのか・・・・?
このままでは、括弧のが閉じていないし、返されるのはRow(=数値)のつもりなのでしょうか?
仮にFoundCellにRangeが返されているものとして、戻り値は最初に該当するセルになります。(該当セル全体ではない)
それなので、該当するセル全部に対して処理を行いたいのであれば
If ~ Then ~ Else ~
ではなく、次の該当セルを得るのに、.FindNext()メソッドを利用して処理を繰り返すことになります。
また、FoundCell Is Nothing というのは該当するセルがまったく存在しない場合を意味していています。
上記の.FindNext()を繰り返していくと、循環してやがて最初ののセルを参照するようになりますので、最初に処理したものを記憶しておいて、同じセルになったらループを抜けるという記述方法をとることになります。
詳細な説明は、エクセルのヘルプをご参照ください。
サンプルコードをご覧になるのが、わかりやすいと思います。
https://msdn.microsoft.com/ja-jp/library/office/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) findメソッドの変数について 6 2023/06/23 08:01
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
VB.NET Excelを読み込んでDataT...
-
VBの質問#if 0 then ってどう...
-
EXCEL VBA マクロ 実行する度に...
-
Do~Loopした回数をカウントしたい
-
月度は何て読みますか?
-
VBAでCOPYを繰り返すと、処理が...
-
インタラクティブの反対語は?
-
セックスレスの既婚女性は自慰...
-
COBOLのEVALUATE文について
-
RPGプログラムの*HIVALについて
-
フォーム上のすべてのTextBoxを...
-
findは動くがfindnextがマクロ...
-
vba 空のデータをSplitする時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
月度は何て読みますか?
-
UMLでの例外処理
-
EXCEL VBA マクロ 実行する度に...
-
セックスレスの既婚女性は自慰...
-
switch の範囲指定
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
Do~Loopした回数をカウントしたい
-
VBの質問#if 0 then ってどう...
-
DoEventsがやはり分からない
-
お家デートをしててハグを長い...
-
findは動くがfindnextがマクロ...
-
リョウ・・・量?料?
-
生活保護受給者は性欲をどんな...
-
iD
おすすめ情報