Как заполнить форму пользователя по названию продукта, которое вы ввели - PullRequest
0 голосов
/ 07 октября 2018

Надеюсь, я четко объясню

У меня есть форма, которую я печатаю в записях и вставляю в лист, и она хорошо работает

Теперь мне нужно это, когда я набираю продуктостальные поля получат свои значения из таблицы, если они существуют

То есть, если продукт уже существует, будут заполнены соответствующие значения

Затем я изменяю по мере необходимости и нажимаюкнопку Обновить и обновить ту же строку

Так что мне нужно 2 вещи

  1. Если продукт уже существует, заполните соответствующие значения в остальных полях наформа

  2. Обновить ту же линию продукта

My form

Это кодУ меня есть

    Private Sub update_Click()
    'When you click the Add button
    'Populates the data in the sheet
    '~~~~>>>>>> I do not know how to put on the same line of the selected product
        Dim lRow As Long
        Dim ws As Worksheet
        Set ws = Worksheets("sheet")
        lRow = ws.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
        With ws
            'Me.ComboBox3.Value >>>> Here he should look up the row with the same cell value and write down the following values
            .Cells(lRow, 2).Value = Me.TextBox2.Value
            .Cells(lRow, 2).Value = Me.TextBox1.Value
        End With
    End Sub
    Private Sub add_Click()
'Not related to here
    End Sub

Я был бы рад получить помощь / концепции / указания от экспертов здесь

Примечание: для каждого продукта есть уникальная линия

Если этоне понятно, пожалуйста, напишите мне

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Для тех, кому нужно, я написал полный код здесь, и он хорошо работает

Спасибо @ urdearboy

    Option Explicit

    Private Sub ComboBox1_Change()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheets1")
    Dim Found As Range
    Set Found = ws.Range("A1:C3").Find(What:=ComboBox1.Value, MatchCase:=False)
    If Not Found Is Nothing Then
        Me.TextBox1 = Found.Offset(, 1)
        Me.TextBox2 = Found.Offset(, 2)
                Else
        Me.TextBox1 = ""
        Me.TextBox2 = ""
    End If
    End Sub

    Private Sub update_Click()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheets1")
    Dim Found As Range
    Set Found = ws.Range("A1:C3").Find(What:=ComboBox1.Value, MatchCase:=False)
    If Not Found Is Nothing Then
            Found.Offset(, 1).Value = Me.TextBox1.Value
            Found.Offset(, 2).Value = Me.TextBox2.Value
    End If
    End Sub

    Private Sub add_Click()
        Dim lRow As Long
        Dim ws As Worksheet
        Set ws = Worksheets("Sheets1")
        lRow = ws.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
        With ws
            .Cells(lRow, 1).Value = Me.ComboBox1.Value
            .Cells(lRow, 2).Value = Me.TextBox1.Value
            .Cells(lRow, 3).Value = Me.TextBox2.Value
        End With
    End Sub
0 голосов
/ 07 октября 2018

Вы можете попробовать это, чтобы автоматически заполнить другие 2 поля, если найден соответствующий идентификатор продукта.Каждый раз, когда ComboBox1 изменяется, он ищет идентификатор продукта, используя метод Range.Find.Если продукт найден, он импортирует соответствующее значение из Column B и Column C, используя Offset(r, c)

. Вам нужно будет изменить параметры метода Range.Find, чтобы удовлетворить ваши потребности.Вариантов много, поэтому лучше всего посмотреть эту ссылку и добавить их по своему усмотрению.Похоже, вы захотите Lookin:= xlWhole для начала.


Option Explicit

Private Sub ComboBox1_Change()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("sheet")
Dim Found As Range

Set Found = ws.Range("A:A").Find(ComboBox1.Value)

If Not Found Is Nothing Then
    Me.TextBox1 = Found.Offset(, 1)
    Me.TextBox2 = Found.Offset(, 2)
Else                                            'Revert back to blank if nothing is found
    Me.TextBox1 = ""
    Me.TextBox2 = ""
End If

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