У меня есть пользовательская форма, которая будет вставлять значение combobox1 в следующую доступную строку в столбце B. Справа есть 3 столбца (C, D и E), в которых есть формулы vlookup, которые я хотел бы заполнить при вставке значения combobox1. в колонку Б.
Это формула vlookup, и B123 будет значением combobox1 для этой конкретной строки. =ЕСЛИОШИБКА(ВПР(B123,'Лист1'!$A$3:$C$370,2,0),0)/1000000
Это то, что я пробовал до сих пор
Dim nextrow As Long
Dim nextrow1 As Long
Dim nextrow2 As Long
nextrow = Cells(Rows.Count, "C").End(xlUp).Row + 1
.Range(rows.count, nextrow - 1).FillDown
nextrow1 = Cells(Rows.Count, "D").End(xlUp).Row + 1
.Range(rows.count, nextrow - 1).FillDown
nextrow2 = Cells(Rows.Count, "E").End(xlUp).Row + 1
.Range(rows.count, nextrow - 1).FillDown
End Sub
Этот код вставит значение поля со списком в следующую доступную строку в столбце B.
Private sub CommandButton1_click()
With Worksheets("sheet")
.Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) = ComboBox1.Value
.Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0) = ComboBox2.Value
End With
ActiveWorkbook.RefreshAll
Unload Me
Я мог бы сделать это, однако значения столбца B добавляются по 1-3 за раз, в то время как формулы в C, D и E необходимы сразу после заполнения B. @FoxfireAndBurnsAndBurns
Я понимаю, что вы имеете в виду @FoxfireAndBurnsAndBurns, но не знаю, как ссылаться на диапазон, поскольку постоянно добавляются новые значения.
Как ваш код переносит значение из ComboBox
в следующую пустую ячейку в Col B
?
@GMalc обновлен, чтобы показать правильный код
Смотрите мое обновление, добавлены границы
Я добавил строку в ваш код, она должна автоматически заполняться каждый раз, когда вы нажимаете кнопку.
Private sub CommandButton1_click()
With Worksheets("sheet")
.Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) = ComboBox1.Value
.Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0) = ComboBox2.Value
.Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).AutoFill .Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2)
With .Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2)
.Borders.LineStyle = xlContinuous
End With
End With
ActiveWorkbook.RefreshAll
Unload Me
Ок работает отлично спасибо. Как бы я также добавил границу вокруг этого диапазона? Я записал макрос, но не уверен, что изменить диапазон, поскольку он зависит от того, сколько значений добавлено в поле со списком.
Я добавил еще одно текстовое поле, которое я хотел бы перевести в столбцы ячейки 2 по сравнению со значением combobox1. Как я могу это сделать?
Также, если поле со списком/текстовое поле пусто, я бы хотел, чтобы связанная ячейка оставалась прежней.
@Tmacjoshua, было бы лучше, если бы вы задали это как еще один вопрос.
не могли бы вы взглянуть на этот вопрос, пожалуйста. stackoverflow.com/questions/56327603/…
Я предлагаю сначала заполнить все значения в столбце B, а позже вы можете перетащить свои формулы в C, D и E. Запишите макрос, чтобы увидеть код, который нужно перетащить.