私はVBAを練習しています。私は自分のコードにいくつかの助けと訂正が必要です。 この作業では、コンボボックスから選択した値のワークシートを検索する検索ツールを作成しています。それぞれの結果が最初のページに表示されます。.FindとOffsetを使用してVBAコードをデバッグする方法は?
問題:私は範囲rFound
に.Find
方法を定義されたコードで
。各ワークシートで、検索された値は列
D
にあります。列B
からE
に行をコピーしたいと思います。私はどのようにオフセットを使ってその範囲を選択しようとしたのですが、エラーが発生するかどうか試してみました。なぜ、どのように修正するのですか?結果を貼り付ける(リストする)ときは、最初のページの3行目の列
K
から開始します。コードを実行すると、正しいターゲットが選択されますが、何も貼り付けられません。これを修正するには?
私はまた、各検索結果の後にドキュメントヘッダーをコピーするには、いくつかの試みを作ったが、私はそれらをコメントアウト、getOwner
で行を無視してください。
Dim ws As Worksheet, OutputWs As Worksheet, wsLists As Worksheet
Dim rFound As Range ', getOwner As Range
Dim strName As String
Dim count As Long, LastRow As Long
Dim IsValueFound As Boolean
'Dim cboSelectName As ComboBox
Dim a As String
IsValueFound = False
Set OutputWs = Worksheets("Teszt") '---->change the sheet name as required
LastRow = OutputWs.Cells(Rows.count, "A").End(xlUp).Row
Set wsLists = Worksheets("Lists")
a = ComboBox1.Value
On Error Resume Next
strName = a
If strName = "" Then Exit Sub
For Each ws In Worksheets
If ws.Name <> "Output" Then
With ws.UsedRange
Set rFound = .Find(What:=strName, After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole)
If Not rFound Is Nothing Then
Application.Goto rFound, True
IsValueFound = True
'MsgBox rFound.Row
rFound.EntireRow.Copy
'Rfound keres - rFound.Range(rFound(Offset(-2,")),rFound.Offset(1,"")).Copy ' ---> This is a suggestion
OutputWs.Cells(LastRow + 2, 11).PasteSpecial xlPasteAll
'getOwner.Range(K2, R2).Copy ' attempt to copy the header for each search result
'getOwner.Cells(LastRow + 1, 6).Paste
Application.CutCopyMode = False
LastRow = LastRow + 1
End If
End With
End If
Next ws
On Error GoTo 0
If IsValueFound Then
OutputWs.Select
MsgBox "Search Complete!"
Else
MsgBox "Value not found"
End If
どこにコピーしているのかよくわからないが、 'rFound'の行の' B:E'を 'OutputWs'の' K'列にコピーすると、 'Application.Intersect(rFound.EntireRow 、rFound.Worksheet.Range( "B:E"))。OutputWs.Cells(LastRow + 2、 "K")をコピーします。 OutputWs.Cells(LastRow + 2、 "K")をコピーしてください。rFound.Worksheet.Range(rFound.EntireRow.Cells(1、 "B")、rFound.EntireRow.Cells(1、 "E"))または 'rFound.EntireRow.Cells(1、" B ")。Resize(1,4).Copy OutputWs.Cells(LastRow + 2、" K ")'。 – GSerg
最後の1つが動作しています rFound.EntireRow.Cells(1、 "B")。サイズ変更(1、4).Copy 残念なことに検索はできません...コードがドロップダウンを検索しない理由を教えてくださいリストの値?私のExcelシートでは、各ワークシート上で発生するすべての名前をリストしたいので、これらの名前はドロップダウンリストから選択します。私はシート2の各行に4つの同じ名前のような例を作った。コードを実行すると、最初の結果しか表示されない。何故ですか? –
彼らはすべて働いており、まったく同じことをしています。 – GSerg