0
アクティブなワークシートのセル値に基づいて別のシートの結果をコピーするマクロを実装しようとしています。:次いですなわちGWworkStations(内のすべての要素をループ)「の列Bに一致を見つける 『『コルリスト』』シート、および」E C」に対応する値をコピーMathedEntries "だから私はそれらをアクティブなシートにコピーすることができます。ただし、行番号を報告する代わりに、matchedRow "の空白が返されます。誰か助けてもらえますか?問題がどこにあるのかわからないのですか?このコードを実行するとエラーは発生しません。前もって感謝します。別のシートからのVBAの行の一致
dim MatchedEntries() as string
dim GWworkStations() as variant
number_of_rows = ActiveSheet.UsedRange.Rows.Count
With ActiveWorkbook.Worksheets("New Sheet")
GWworkStations() = range("B2:B" & number_of_rows)
End With
ReDim MatchedEntries(1 To r) 'Size the array to hold the results.
'for every cell that is not empty in GWworkStations(), search through column B of 'Col List ' sheet.
For i = 1 To number_of_rows
'matchedRow = Empty
On Error Resume Next 'Keep running if Excel MATCH function below doesn't find a match.
If Not IsEmpty(Cells(i, 1)) Then
matchedRow = Application.WorksheetFunction.Match(GWworkStations(i, 1), range("Col List!B:B"), 0)
If matchedRow = Empty Then Debug.Print "Empty " & matchedRow
If IsEmpty(matchedRow) Then 'No match.
MatchedEntries(i, 1) = "" 'GWworkStations(i, 1)
Else
'If GWworkStations(i, 1) = GWworkStations(i - 1) Then
If IsNumeric(matchedRow) Then 'Match was found.
MatchedEntries(i, 1) = Application.WorksheetFunction.Index(range("List!C:E"), matchedRow, 1)
Else 'MATCH function returned a non-numeric result.
MatchedEntries(i, 1) = ""
End If 'IsNumeric(MatchedRow)
End If 'IsEmpty(MatchedRow)
Else
End If
Next i
range("E2:G" & number_of_rows) = MatchedEntries() 'Write the tag name results out to range E:G.
:
はまた、(私が好む)
Range.Find
メソッドを使用することができます。 – Gudbahri@arcadeprecintマクロを変更して、別のシートの複数の出現箇所を検索し、隣接するセルをアクティブなシートにコピーする場合は、それを行う最善の方法は何でしょうか? – Gudbahri
@ Gudbahriこれについて新しい質問を投稿する必要があります。しかし、異なるワークシートを参照することは困難ではありませんか?あなたはすでにあなたのコードでそれを行います。最初に試してみてください。上記のコードをもう一度見て、私はあなたに役立つ2つの緊急の提案をしています: 'Options Explicit'(googleの意味)を使用してください。一貫したコードを書くのに役立ちます。また、 'On Error Resume Next'を使用しないでください。また、少なくとも関連行の後で無効にしてください。それはあなたがエラーメッセージと非常に悪い習慣を得ない理由です! (もう一度、Googleの意味と使用方法) – arcadeprecinct