Выберите ячейку в зависимости от значения в UF Combobox - PullRequest
0 голосов
/ 10 марта 2020

Впервые в VBA, я все еще собираю столько знаний, сколько могу (и двигаюсь вперед), но я застрял.

Так что в основном у меня есть лист Excel под названием «Данные» (база данных), где У меня есть Имя клиента в столбце 1-й строки и под каждой серией данных (Возраст, пол, рост и т. Д. c.).

С другой стороны, у меня есть «Userform1», который используется для обновления данные, каждая информация находится в текстовом поле для имени клиента, которое вы выбираете из «ComboBox2». (Невозможно удалить или добавить клиента).

Моя цель: после заполнения формы я бы хотел, чтобы мой код нашел ячейки клиента (из списка), а затем сохранил данные, связанные смещением одного под ячейкой и перезаписать и еще раз.

(может быть, я не понимаю, но EN не мой родной язык, и, конечно, VBA тоже).

Моя попытка кода:

Private Sub Target_click() 'Target Button is the button used to update data

    With ComboBox2
    Worksheets("Data").Activate
    ActiveSheet.Range (ComboBox2.Value)
    ActiveCell.Offset(1, 0).Value = TextBox1.Value.Activate 'TBox1 = Age
    ActiveCell.Offset(1, 0).Value = TextBox2.Value.Activate 'TBox2 = Sex
    ActiveCell.Offset(1, 0).Value = TextBox3.Value.Activate 'TBox3 = Height
    ... Etc ...
    End With

End Sub

Спасибо всем.

1 Ответ

0 голосов
/ 10 марта 2020

Это должно помочь вам начать работу

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

Читайте комментарии кода и корректируйте его чтобы соответствовать вашим потребностям

Код:

Private Sub Target_Click()

    Dim targetSheet As Worksheet
    Dim searchRange As Range
    Dim resultRange As Range

    Dim clientName As String
    Dim clientAge As Variant ' use long if you have validated the textbox to be numeric
    Dim clientSex As String
    Dim clientHeight As Variant ' use long if you have validated the textbox to be numeric

    Dim lastRow As Long

    ' Gather forms data
    clientName = Me.ComboBox1.Value
    clientAge = Me.TextBox1.Value
    clientSex = Me.TextBox2.Value
    clientHeight = Me.TextBox3.Value

    Set targetSheet = ThisWorkbook.Worksheets("Data")

    lastRow = targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row

    Set searchRange = targetSheet.Range("A1:G" & lastRow)

    ' Find the client
    Set resultRange = searchRange.Columns("A").Find(clientName)

    ' Exit if didn't find anything
    If resultRange Is Nothing Then Exit Sub

    ' If found, update cells
    With resultRange
        .Cells(1, "B").Value = clientAge
        .Cells(1, "C").Value = clientSex
        .Cells(1, "D").Value = clientHeight
    End With

End Sub

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...