'fills the text box with information from Sheet1 according to textbox1 input
Private Sub Autocomplete_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim Last_Row As Long
Last_Row = Application.WorksheetFunction.CountA(sh.Range("A:A"))
Dim w As Long
For w = 2 To Last_Row
If sh.Cells(w, 2).Value = Me.TextBox1.Value Then
Me.TextBox4.Value = sh.Cells(w, 1).Value
Me.TextBox1.Value = sh.Cells(w, 2).Value
Me.TextBox8.Value = w
Exit Sub
End If
Next w
End Sub
'sets textbox4 and 1 to values clicked on
'this listbox uses the same data from Sheet1
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If Me.ListBox1.List(Me.ListBox1.ListIndex, 0) <> "" Then
Me.TextBox1.Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
Me.TextBox4.Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
End If
End Sub
'updates record accoring to textbox1 input
Private Sub Update_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim Selected_Row As Long
'finds the record according to the value in Textbox4
Selected_Row = Application.WorksheetFunction.Match(Me.ListBox1.List(Me.ListBox1.ListIndex, 0), sh.Range("A:A"), 0)
sh.Range("B" & Selected_Row).Value = Me.TextBox1.Value
End Sub
Теперь, если я использую функции ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
и Update_Click()
, он прекрасно работает, но если я использую Autocomplete_Click()
и Update_Click()
, весь ад проваливается. Поскольку функция сопоставления Application.WorksheetFunction.Match(Me.ListBox1.List(Me.ListBox1.ListIndex, 0), sh.Range("A:A"), 0)
не может принять sh.Cells(w, 1).Value
. Может кто-нибудь объяснить, почему это не сработает? Textbox4 является одинаковым значением в обоих случаях Listbox и Cells.