非常に単純に聞こえる問題に苦労していますが、コードに問題があります。
テキストボックス1に「シリアル番号」を入力すると、2つのテキストボックスを持つユーザーフォームがあります。シリアル番号がシートの「RMA」列の既存のフィールドと一致すると、テキストボックス2の「RMA番号」が自動的に入力されます。
一致しない場合は、textbox2をクリアするか、「一致しません」と言います。
If-Then-Elseタイプのコードを実行しましたが、現時点では最後のエントリでのみ機能するようです...
すべてのエントリに一致し、シリアル番号が一致しない場合にクリアできるように、コードで何を変更する必要がありますか?
'Autopopulate RMA# with Serial Number
Private Sub SN_TextBox1_Change()
Dim serial1_id As String
serial1_id = UCase(Trim(SN_TextBox1.Text))
lastrow = Worksheets("RMA Tracker").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastrow
If UCase(Worksheets("RMA Tracker").Cells(i, 4).Value) = serial1_id Then
RMA_TextBox1.Text = Worksheets("RMA Tracker").Cells(i, 1).Value
Else
RMA_TextBox1.Value = ""
End If
Next i
End Sub
Find()
メソッドを使用して目的を達成できると思います。以下のコードはTextBox1
、RMA列から値を検索します(D:D)
。一致するものが見つかった場合Column A:A
、一致する行の値をから返しますTextBox2
。一致するものがない場合は、にNo Match
メッセージが表示されTextBox2
ます。
Private Sub CommandButton1_Click()
Dim RMA As String
Dim Rng As Range
RMA = Me.TextBox1
If Trim(RMA) <> "" Then
With Sheets("RMA Tracker").Range("D:D") 'D:D for column 4
Set Rng = .Find(What:=RMA, _
After:=.Range("A1"), _
Lookat:=xlWhole, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False)
If Not Rng Is Nothing Then
Me.TextBox2 = Rng.Offset(0, -3)
Else
Me.TextBox2 = "No Match"
End If
End With
End If
End Sub
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加