列Aの単語 "Apple"をチェックするループを作成しようとしました(私はVBAの新機能です)。列Aにはフルーツ名が含まれています。 「Apple」が見つかった場合、コードは範囲「H2:S2」を列Gにコピーし、列Aの対応する行の値をコピーします。VBAワイルドカードを使用して行内で値を見つける
ただし、検索条件の部分をワイルドカードに変更するとコードは実行されません私の目標は、単語Applecakeが存在する行を含めることです)。
lookupVal = "Apple" 'Works
lookupVal = "*Apple*" 'Nothing happens
はそれがワイルドカードで動作しますので、どのように私は以下のコードを調整する必要がありますまたは多分結果を達成するために、このコードの状態より良い解決策がありますか?
全コード:
Sub CopypasteValues()
Dim i, j, lastrowA As Long
Dim lookupVal As String
'finds the last row in Column A
lastrowA = Sheets("Dataset").Cells(Rows.Count, "A").End(xlUp).Row
'loop over values in Sheet "Dataset"
For i = 1 To lastrowA
lookupVal = "Apple" 'Define search critera
For j = 1 To lastrowA
currVal = Sheets("Dataset").Cells(j, "A")
If lookupVal = currVal Then
ValueCopy = Range("G2:S2").Copy 'Range to copy
Sheets("Dataset").Cells(j, "G") = Range("G" & j).PasteSpecial
End If
Next j
Next i
End Sub
サイドノート:必ず**変数ごとにタイプを指定してください。 'Dim i、j、lastrowA As Long'では、最後のものは' Long'と宣言します。最初の2つは 'Variant'のままです:' Dim i As Long、j As Long、lastrowA As Long'を使用します。 「Long」と入力します。 –
指摘してくれてありがとう!! – Wiz