Нажатие клавиши ComboBox и перенос данных из пользовательской формы Excel в таблицу листа

Нажатие клавиши ComboBox и перенос данных из пользовательской формы Excel в таблицу листа

Я пытаюсь создать небольшую систему инвентаризации с помощью Excel и хотел бы использовать макрос для добавления новой записи. Моя таблица и пользовательская форма на месте, однако у меня есть несколько проблем.

Во-первых, я не могу «заблокировать» свои выпадающие списки. Я пробовал заблокировать их через их свойства, однако в результате я теперь не могу выбрать элемент из списка. (Выпадающие списки предварительно заполнены). У меня есть кнопка на моем листе (Добавить новую запись), и она содержит код:

UserForm1.ComboBox1.List = Array("HO", "SI", "SV", "PTSF")
UserForm1.ComboBox2.List = Array("AP", "FU", "GE", "IT")
UserForm1.Show

И в моем выпадающем списке:

Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 8 Or KeyAscii = 127 Then
KeyAscii = 0
Else
End If
end sub

Код в моем выпадающем списке не работает, и я хотел бы заблокировать его, чтобы ничего нельзя было вводить или редактировать.

Вторая проблема в том, что я не знаю, как вызвать мою таблицу и вставить в нее данные из моей пользовательской формы. Я пробовал это раньше:

sheet1.table1.Lastrow = userform1.textbox1.value

но очевидно, что это не работает :(

Надеюсь, кто-нибудь мне поможет. Спасибо заранее!

решение1

Я решил свою проблему с помощью этих кодов:

Dim ws As Worksheet
Dim lo As ListObject
Dim lr As ListRow

Set ws = Sheets("HO Database")
Set lo = ws.ListObjects(1)
Set lr = lo.ListRows.Add

lr.Range(1, 1).Value = Me.ComboBox2.Value
lr.Range(1, 2).Value = Me.ComboBox1.Value
lr.Range(1, 3).Value = Me.TextBox9.Value
lr.Range(1, 4).Value = Me.TextBox1.Value
lr.Range(1, 5).Value = Me.TextBox2.Value
lr.Range(1, 6).Value = Me.TextBox3.Value
lr.Range(1, 7).Value = Me.TextBox4.Value
lr.Range(1, 8).Value = Me.TextBox5.Value
lr.Range(1, 9).Value = Me.TextBox6.Value
lr.Range(1, 10).Value = Me.TextBox7.Value
lr.Range(1, 11).Value = Me.TextBox8.Value

Надеюсь, кому-то это будет полезно.

Связанный контент