6より大きい数値を探して別のシートに送信する代わりに、 3つの名前を検索したいので、連絡先リストを検索し、その情報をシートからレポートシートにプルすることができます。私は3行目String
の代わりLong
されるべきだと思う3つの名前のワークシートを検索する
Private Sub CommandButton1_Click()
Dim ws As Worksheet, myCounter
Dim erow, myValue As Long
For Each ws In Sheets
If ws.Range("C3").Value > 6 Then
myCounter = 1
ws.Select
ws.Range("c3").Select
myValue = ws.Range("C3").Value
Worksheets("Report").Select
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Cells(erow, 1) = myValue
nextValue = MsgBox("Value found in " & ws.Name & Chr(10) & "Continue?", vbInformation + vbYesvbNo, ws.Name & " C3 = " & ws.Range("C3").Value)
Select Case nextValue
Case Is = vbYes
Case Is = vbNo
Exit Sub
End Select
End If
Next ws
If myCounter = 0 Then
MsgBox "None of the sheets contains a " & Chr(10) & "value greater than 6 in cell C3 ", vbInformation, "Not Found"
End If
End Sub
:
は、以下の私の古いコードです。
私が探している名前は "David" "Andrea" & "Caroline"です。3回書いても、ループしてもわかりません。また、これらの名前のスプレッドシート全体を検索する方法もわかりません。
マクロレコーダーをオンにし、[検索]ダイアログを使用して名前を探します。録音を停止し、コードを調べます。見つけたい名前を別のシートに3つのセルに入れ、 "NamesToFind"という3つのセルの名前付き範囲を作成します。 Sheet( "Your sheet name")。UsedRangeはRange.Findメソッドを使用して名前を検索するために、Range(NamesToFind)ループのFor Each Nameを設定します。コードがうまくいかなかったら、私たちに戻ってください。注意:あなたが持っているコードは良い出発点ではありません。 –
@VBABeginner私の答えと下のコードを読んで、あなたが意図したとおりに動作するかどうか教えてください –