Предполагалось, что это профильный концепт, у меня гораздо больший проект с той же проблемой, я выбрал разные подходы и всегда получаю одинаковые результаты.Я создавал дополнительные ошибки в своем основном коде, поэтому я написал это, чтобы проверить себя на функциональность того, что я делаю.Итак, просто наперед, я возвращаюсь к программированию после 8-летнего стажа, выполняя инженерно-технические работы на местах.И поэтому я снова делаю ошибки для новичка.Мне нужна помощь, чтобы увидеть мою ошибку.
Когда я пытаюсь обновить .Value ячейки в listObject, она вызывает функцию события в пользовательской форме.
Чтобы объяснить немного больше:
У меня есть таблица - Table1 с идентификатором | Arg1 | Arg2 | Arg3 | Arg4
Я поместил простой Int в ID, т.е. 1, и простые текстовые (строковые) данные в Arg1-Arg4, т.е. Test1,Data1, Data2, Data3
Я создал Simple UserForm1 (имя по умолчанию), чтобы поместить listBox и 4 TextBoxes
У меня есть функция ListBox1_Click (), которая заполняет текстовые поля UserFrom1 данными изListObject (Таблица1).Эта функция работает просто отлично.
У меня также есть функция, которая обновляет ListObject (Table1).Здесь проблема.Когда вы ссылаетесь на значение ячейки ListObject (Table1), чтобы изменить его, вызывается функция события ListBox1_Click (), и мои TextBoxes возвращаются.У меня есть деструкторы для моего объекта, который я «устанавливаю», но я понятия не имею, почему / как вызывается функция.
Private Sub cbUpdate_Click()
Dim myListObj As ListObject
Dim myRange As Range
Set myListObj = ActiveSheet.ListObjects("Table1")
Set myRange = myListObj.ListColumns(1).DataBodyRange.Find(What:= _
Trim(Me.ListBox1), SearchDirection:=xlNext, MatchCase:=False)
myRange.Offset(, 1).Value = Me.tbArg1
myRange.Offset(, 2).Value = Me.tbArg2
myRange.Offset(, 3).Value = Me.tbArg3
myRange.Offset(, 4).Value = Me.tbArg4
Set myRange = Nothing
Set myListObj = Nothing
End Sub
Private Sub ListBox1_Click()
Dim myListObj As ListObject
Dim myRange As Range
Set myListObj = ActiveSheet.ListObjects("Table1")
Set myRange = myListObj.ListColumns(1).DataBodyRange.Find(What:= _
Trim(Me.ListBox1), SearchDirection:=xlNext, MatchCase:=False)
Me.tbArg1 = myRange.Offset(, 1).Value
Me.tbArg2 = myRange.Offset(, 2).Value
Me.tbArg3 = myRange.Offset(, 3).Value
Me.tbArg4 = myRange.Offset(, 4).Value
Set myRange = Nothing
Set myListObj = Nothing
End Sub
Мне нужно понять, как получить ячейки ListObject (Table1) для полученияобновленные значения без вызова не вызываемых функций / Методы.