Userform listbox (несколько столбцов) для редактирования значений и обновления листа и списка - PullRequest
0 голосов
/ 30 января 2020

У меня есть пользовательская форма в Excel, которая имеет список, который извлекает данные из динамического диапазона c (5 столбцов, 1 - уникальный идентификационный номер).

Когда пользователь щелкает запись, которую он отображает каждый значение в текстовом поле и идентификационный номер в метке.

Private Sub ListBox1_Click()
  Me.Label6 = Me.ListBox1.List(ListBox1.ListIndex, 0) 'record number
  Me.TextBox1 = Me.ListBox1.List(ListBox1.ListIndex, 4)'Staff name
  Me.TextBox2 = Me.ListBox1.List(ListBox1.ListIndex, 1)'Strategy
  Me.TextBox3 = Me.ListBox1.List(ListBox1.ListIndex, 2)'Notes
  Me.TextBox4 = Me.ListBox1.List(ListBox1.ListIndex, 3)'Date
End Sub

Я хочу, чтобы пользователь внес изменения в запись и обновил список и данные на листе. Он обновляет нужную запись только с одним значением!

Форма пользователя с обновленным одинаковым значением во всех столбцах, см. Re c# 5

Private Sub CMDUpdate_Click()

Dim erowa As Integer
Dim x  As Integer

erowa = Application.WorksheetFunction.CountA(Sheet9.Range("A:A"))

For x = 2 To erowa

   If Sheet9.Cells(x, "A").Value = Me.Label6 Then  'this is the unique ID

       Sheet9.Cells(x, "B").Value = Me.TextBox1.Value 'Staff name
       Sheet9.Cells(x, "C").Value = Me.TextBox2.Value 'Strategy
       Sheet9.Cells(x, "D").Value = Me.TextBox3.Value 'Notes 
       Sheet9.Cells(x, "E").Value = Me.TextBox4.Value 'date

   End If
Next

End Sub

Также формат даты почему-то отображает юлианское значение!

Я потратил целый день на изучение, просмотр учебников, чтение блогов.

1 Ответ

0 голосов
/ 30 января 2020

Это способ найти значение в Me.Label6 и обновить ячейки рядом с ним

Private Sub CMDUpdate_Click()

    Dim cell As Range

    Set cell = sheet9.Range("A:A").Find(What:=Me.Label6.Caption, _
                                    LookIn:=xlValues, _
                                    LookAt:=xlWhole, _
                                    MatchCase:=False)

    If Not cell Is Nothing Then

        ' Column B
        cell.Offset(, 1).Value = Me.TextBox1.Value 'Staff name
        ' Column C
        cell.Offset(, 2).Value = Me.TextBox2.Value 'Strategy
        ' Column D
        cell.Offset(, 3).Value = Me.TextBox3.Value 'Notes
        ' Column E
        cell.Offset(, 4).Value = Me.TextBox4.Value 'date

    Else

        MsgBox "Record: " & Me.Label6.Caption & " not found in column A!"

    End If

End Sub

Дайте мне знать, если оно работает!

...