Привет всем! Я решил свой первый вопрос о кнопке обновления.
Это вполне работает сейчас. Я подумал, что это невозможно обновить
строка БЕЗ ключа или уникального идентификатора (поэтому я сделал столбец A уникальным
ID).
- Я добавил еще один комбинированный список, расположенный в верхней части списка для поиска / фильтрации. Однако я не знаю, как заполнить комбинированный список БЕЗ РУЧНОГО КОДИРОВАНИЯ, как этот: Stackoverflow . Причина, по которой я не хочу, чтобы это было так, заключается в том, что пользователь будет время от времени добавлять строку, используя пользовательскую форму, а количество строк будет составлять тысячи.
Можно ли как-нибудь заполнить поле со списком, не вводя вручную каждое значение?
Просто обновление о моей проблеме вчера, вот обновленный код и обновленный интерфейс:
![enter image description here](https://i.stack.imgur.com/1INvx.png)
Private Sub btnDelete_Click()
Dim a As Integer
If MsgBox("Are you sure you want to delete this row?", vbYesNo + vbQuestion, "Yes") = vbYes Then
For a = 1 To Range("A100000").End(xlUp).Row
If Cells(a, 1) = listHeader.List(listHeader.ListIndex) Then
Rows(a).Select
Selection.Delete
End If
Next a
End If
End Sub
Private Sub btnSearch_Click()
'IM THINKING ABOUT REMOVING THE SEARCH BUTTON BECAUSE THE COMBOBOX ITSELF CAN BE USED FOR SEARCHING THE ROW
'IT MAKES THE SEARCH BUTTON USELESS
'Dim x As Long
'Dim y As Long
'x = Sheets("PRESTAGE DB").Range("A" & Rows.Count).End(xlUp).Row
'For y = 2 To x
'If Sheets("PRESTAGE DB").Cells(y, 1).Text = cmbSearch.Value Then
'cmbSchema.Text = Sheets("PRESTAGE DB").Cells(y, 1)
'cmbEnvironment.Text = Sheets("PRESTAGE DB").Cells(y, 2)
'cmbHost.Text = Sheets("PRESTAGE DB").Cells(y, 3)
'cmbIP.Text = Sheets("PRESTAGE DB").Cells(y, 4)
'cmbAccessible.Text = Sheets("PRESTAGE DB").Cells(y, 5)
'cmbLast.Text = Sheets("PRESTAGE DB").Cells(y, 6)
'cmbConfirmation.Text = Sheets("PRESTAGE DB").Cells(y, 7)
'cmbProjects.Text = Sheets("PRESTAGE DB").Cells(y, 8)
'End If
'Next y
End Sub
Private Sub btnView_Click()
listHeader.RowSource = "A4:H200"
End Sub
Private Sub cmbAdd_Click()
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("PRESTAGE DB")
nextrow = sheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
sheet.Cells(nextrow, 1) = Me.cmbSchema
sheet.Cells(nextrow, 2) = Me.cmbEnvironment
sheet.Cells(nextrow, 3) = Me.cmbHost
sheet.Cells(nextrow, 4) = Me.cmbIP
sheet.Cells(nextrow, 5) = Me.cmbAccessible
sheet.Cells(nextrow, 6) = Me.cmbLast
sheet.Cells(nextrow, 7) = Me.cmbConfirmation
sheet.Cells(nextrow, 8) = Me.cmbProjects
End Sub
Private Sub cmbSearch_Change()
Dim x As Long
Dim y As Long
x = Sheets("PRESTAGE DB").Range("A" & Rows.Count).End(xlUp).Row
For y = 2 To x
If Sheets("PRESTAGE DB").Cells(y, 1).Text = cmbSearch.Value Then
cmbSchema.Text = Sheets("PRESTAGE DB").Cells(y, 1)
cmbEnvironment.Text = Sheets("PRESTAGE DB").Cells(y, 2)
cmbHost.Text = Sheets("PRESTAGE DB").Cells(y, 3)
cmbIP.Text = Sheets("PRESTAGE DB").Cells(y, 4)
cmbAccessible.Text = Sheets("PRESTAGE DB").Cells(y, 5)
cmbLast.Text = Sheets("PRESTAGE DB").Cells(y, 6)
cmbConfirmation.Text = Sheets("PRESTAGE DB").Cells(y, 7)
cmbProjects.Text = Sheets("PRESTAGE DB").Cells(y, 8)
End If
Next y
End Sub
Private Sub cmbUpdate_Click()
Dim x As Long
Dim y As Long
x = Sheets("PRESTAGE DB").Range("A" & Rows.Count).End(xlUp).Row
For y = 2 To x
If Sheets("PRESTAGE DB").Cells(y, 1).Text = cmbSchema.Value Then
Sheets("PRESTAGE DB").Cells(y, 2) = cmbEnvironment
Sheets("PRESTAGE DB").Cells(y, 3) = cmbHost
Sheets("PRESTAGE DB").Cells(y, 4) = cmbIP
Sheets("PRESTAGE DB").Cells(y, 5) = cmbAccessible
Sheets("PRESTAGE DB").Cells(y, 6) = cmbLast
Sheets("PRESTAGE DB").Cells(y, 7) = cmbConfirmation
Sheets("PRESTAGE DB").Cells(y, 8) = cmbProjects
End If
Next y
End Sub
Private Sub CommandButton5_Click()
listHeader.RowSource = ""
End Sub
Private Sub listHeader_Click()
'Dim rngMyData As Range
Dim x As Long
Dim y As Long
cmbSchema.Value = UserForm1.listHeader.Column(0)
cmbEnvironment.Value = UserForm1.listHeader.Column(1)
cmbHost.Value = UserForm1.listHeader.Column(2)
cmbIP.Value = UserForm1.listHeader.Column(3)
cmbAccessible.Value = UserForm1.listHeader.Column(4)
cmbLast.Value = UserForm1.listHeader.Column(5)
cmbConfirmation.Value = UserForm1.listHeader.Column(6)
cmbProjects.Value = UserForm1.listHeader.Column(7)
End Sub
Некоторые проблемы на данный момент:
Кнопка поиска работает, отображая значения строк в выпадающих списках ниже, но НЕ в списке.
Кнопка обновления работает только через кнопку поиска. Как уже упоминалось, кнопка поиска отображает значение строки в выпадающем списке, затем пользователь вводит / редактирует значение в выпадающем списке, нажимает КНОПКУ ОБНОВЛЕНИЯ, и строка обновляется, как и должно быть.
КНОПКА ОБНОВЛЕНИЯ НЕ РАБОТАЕТ, когда я нажимаю кнопку «Просмотр списка» и выбираю строку из списка. Значение строки по-прежнему отображается в выпадающих списках, но когда я пытаюсь изменить значение и нажать кнопку обновления, оно больше не работает.
Это сбивает с толку, но я действительно пытаюсь все выяснить.