Страницы: 1
RSS
Как через текстовое поле ввести значения в зависимости от выбора в списке
 
Вопрос в том, как сделать чтобы значения в текстовом поле вводились в нужный столбец. ПРИ НАЖАТИИ ENTER
Для "ПОКУПАТЕЛЬ1" в столбец A5,  "ПОКУПАТЕЛЬ2" в столбец B5 И ТАК ДАЛЕЕ
 
Что-то типа такого

Код
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
        If Me.ComboBox1.Text <> "" Then
            Buyer = Val(Replace(Me.ComboBox1.Text, "ПОКУПАТЕЛЬ", ""))
            With Worksheets("Лист1")
                LastRow = .Cells(.Rows.Count, Buyer).End(xlUp).Row
                If LastRow = 1 Then LastRow = 4
                .Cells(LastRow + 1, Buyer) = Me.TextBox1.Text
            End With
        End If
    End If
    Me.TextBox1.Text = ""
End Sub
Изменено: New - 06.08.2020 16:32:11
 
New, проверил, вроде работает, только мне нужно вводить 11-значные числа.
А это не получается. Только одну цифру можно.
Изменено: cliff99 - 06.08.2020 16:44:10
 
Там 1 строку надо выше перенести
Код
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
        If Me.ComboBox1.Text <> "" Then
            Buyer = Val(Replace(Me.ComboBox1.Text, "ПОКУПАТЕЛЬ", ""))
            With Worksheets("Лист1")
                LastRow = .Cells(.Rows.Count, Buyer).End(xlUp).Row
                If LastRow = 1 Then LastRow = 4
                .Cells(LastRow + 1, Buyer) = Me.TextBox1.Text
                Me.TextBox1.Text = ""
            End With
        End If
    End If
End Sub
 
New, спасибо, отлично все. Как только мне переименовать покупателей сейчас ? У них имена разные ведь будут.
Изменено: cliff99 - 06.08.2020 17:04:57
 
Вам надо предоставлять на форум более реальные данные. Тогда и помощь от нас будет более реальная.
Замените мой предыдущий код на вот этот

Код
Private Sub UserForm_Initialize()
    Me.ComboBox1.RowSource = ""
    Me.ComboBox1.AddItem "Иванов И."
    Me.ComboBox1.AddItem "Петров П."
    Me.ComboBox1.AddItem "Сидоров С."
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
        If Me.ComboBox1.Text <> "" Then
            Buyer = Me.ComboBox1.ListIndex + 1 
            With Worksheets("Лист1")
                LastRow = .Cells(.Rows.Count, Buyer).End(xlUp).Row
                If LastRow = 1 Then LastRow = 4
                .Cells(LastRow + 1, Buyer) = Me.TextBox1.Text
                Me.TextBox1.Text = ""
            End With
        End If
    End If
End Sub
Изменено: New - 06.08.2020 17:10:20
 
New, ОШИБКА.
runtime error "9"
sub script out of range
 
см. файл
 
New, сейчас проверю, вроде работает. Только вылетает ошибка если в список ввести название, которого там нет.
Изменено: cliff99 - 06.08.2020 17:37:45
 
мир не идеален...
Понимаете, вы задали один вопрос, вам на него ответили. А потом вы что-то другое делаете и говорите, что - ааа, а у меня не работает.
Ну, так в вашем первом сообщение ничего и не было, что вы там что-то куда-то добавляете...
Вам надо сесть за стол, взять ручку и листок бумаги, подумать как будет работать ваша программа, записать это всё на листе.
Сформулировать мысли и уже задавать вопросы на форум.
А сейчас разговор ни о чем. Это тоже самые, что вы бы спросили - ребята, а сколько будет 2+2 ? Вам бы ответили: 4.
А потом вы говорите - а я вот складывают 6+4 и у меня что-то не получается ответ 4. Ну, так ваш вопрос на форуме про 2+2, откуда 6, откуда 4 и т.д.
Если у вас новые вопросы возникают - создавайте новую тему, прикладывайте новый файл с примером и мы будем разбираться.

P.S. Если вы ввели в ComboBox1 название ООО Газпром - то в какой столбец макрос должен вставить данные ? В A? в D? в Z? в AD?
Изменено: New - 06.08.2020 18:00:19
 
New, благодарю.
Страницы: 1
Наверх