#excel #vba
#excel #vba
Вопрос:
Я создаю интерфейс пользовательской формы для своей команды, мы хотим упростить и упростить сбор данных, одна из вещей, которую мы хотим устранить повторяющиеся записи, запустив поиск, в настоящее время я ищу только номер счета, который работает, однако было предложено включить умножениеПеременные, код, который у меня есть, выглядит следующим образом, поэтому мой интерфейс выглядел так:
и мой код для поиска счета-фактуры
Public Sub Search1()
row_Number = 0
Do
DoEvents
row_Number = row_Number 1
Item_in_Review1 = Sheets("Source").Range("E" amp; row_Number)
If Item_in_Review = Userform1.TextBox1.Text Then
> /*send relevant data to Userform3*/
UserForm3.TextBox5 = Sheets("Source").Range("B" amp; row_Number)
UserForm3.TextBox1 = Sheets("Source").Range("C" amp; row_Number)
UserForm3.TextBox2 = Sheets("Source").Range("D" amp; row_Number)
UserForm3.TextBox3 = Sheets("Source").Range("E" amp; row_Number)
UserForm3.TextBox6 = Sheets("Source").Range("F" amp; row_Number)
UserForm3.TextBox7 = Sheets("Source").Range("G" amp; row_Number)
UserForm3.TextBox8 = Sheets("Source").Range("H" amp; row_Number)
UserForm3.TextBox9 = Sheets("Source").Range("I" amp; row_Number)
UserForm3.TextBox4 = Sheets("Source").Range("J" amp; row_Number)
End If
Loop Until Item_in_Review = ""
End Sub
и это работает, поэтому я решил попробовать добавить и другие параметры, например :
Public Sub Search1()
row_Number = 0
Do
DoEvents
row_Number = row_Number 1
Item_in_Review1 = Sheets("Source").Range("E" amp; row_Number)
Item_in_Review2 = Sheets("Source").Range("B" amp; row_Number)
Item_in_Review3 = Sheets("Source").Range("I" amp; row_Number)
If Item_in_Review = Userform1.TextBox1.Text And Item_in_Review2 = Userform1.ComboBox1.Text And Item_in_Review3 = Userform1.ComboBox2.Text Then
UserForm3.TextBox5 = Sheets("Source").Range("B" amp; row_Number)
UserForm3.TextBox1 = Sheets("Source").Range("C" amp; row_Number)
UserForm3.TextBox2 = Sheets("Source").Range("D" amp; row_Number)
UserForm3.TextBox3 = Sheets("Source").Range("E" amp; row_Number)
UserForm3.TextBox6 = Sheets("Source").Range("F" amp; row_Number)
UserForm3.TextBox7 = Sheets("Source").Range("G" amp; row_Number)
UserForm3.TextBox8 = Sheets("Source").Range("H" amp; row_Number)
UserForm3.TextBox9 = Sheets("Source").Range("I" amp; row_Number)
UserForm3.TextBox4 = Sheets("Source").Range("J" amp; row_Number)
End If
Loop Until Item_in_Review = "" And Item_in_Review2 = "" And Item_in_Review3 = ""
End Sub
Но теперь я получаю ошибку несоответствия, где я ошибаюсь?
Идея заключается в том, что если Userform1.TextBox1.Text Userform1.ComboBox1.Text Userform1.ComboBox2.Text = диапазон B, E, I соответственно, он заполнит следующую пользовательскую форму всеми соответствующими данными. Кто-нибудь может помочь?
Комментарии:
1. Как вы их определили
Item_in_Review#
? Они должны быть определены как String и правильно присваивать значение. Вы присваиваете диапазон текстовому полю.2. Я назначил диапазон в качестве параметра поиска, потому что для поиска потребуется много данных, поэтому выделение диапазона упрощает кодирование. и это работает.
3. Хотя это работает (VBE выполнил все преобразования, используя свойство по умолчанию), это не очень хорошая практика. Какая строка является несоответствием и какие значения имеют эти столбцы A: J, когда это происходит?