Ссылка на текстовое поле пользовательской формы должна быть в той же строке, что и в поле со списком, но в другом столбце. - PullRequest
1 голос
/ 23 мая 2019

У меня есть пользовательская форма со списком и текстовым полем. Я хотел бы, чтобы в текстовом поле была ссылка на ячейку 2 столбца со значением combobox1. Как бы я поступил так?

Также, если поле со списком не заполнено, я бы хотел, чтобы значение связанных ячеек оставалось как есть.

Код ниже для заполнения списков пользовательской формы.

 With Worksheets("ML")
.Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0) = ComboBox1.Value
.Cells(.Rows.Count, "A").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
With Worksheets("CT")
  .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) = ComboBox2.Value
  .Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 21).AutoFill 
  .Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 21).Resize(2)
With .Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2)
    .Borders.LineStyle = xlContinuous
End With


ActiveWorkbook.RefreshAll
Unload Me
End Sub

Я бы хотел, чтобы значение Combobox1 отображалось в следующей доступной ячейке в столбце A, а затем я бы хотел, чтобы текстовое поле1 отображалось в той же строке, что и значение комбинированного списка, но в столбце AE. В той же строке, что и в текстовом поле, и в поле со списком, я бы хотел заполнить столбцы до AM. Наконец, я хотел бы, чтобы столбцы до AM имели границы. Worksheet Monthly FGL Report

1 Ответ

1 голос
/ 23 мая 2019

Предполагая, что заполнение - это то, что вы хотите, а не автозаполнение (получите формулы из последней строки). Посмотрите, работает ли это для вас.

Dim shtML As Worksheet: Set shtML = ActiveWorkbook.Worksheets("ML") 'Set this to the correct workbook
Dim rngDest As Range
Dim lRow As Long

If ComboBox1.Value <> "" And TextBox1.Value <> "" Then  'Use <[ Or ]> instead of <[ And ]> as you see fit
    With shtML
        lRow = .Cells(.Rows.Count, 1).End(xlUp).row + 1 'Get the first free row
        Set rngDest = .Range(.Cells(lRow, 1), .Cells(lRow, 39))

        With rngDest
            .FillDown 'In the same row as both the textbox value and the combobox value I would like the columns up to AM to be filled down
            .Cells(1, 1) = ComboBox1.Value   'the value of the Combobox1 to display at the next available cell in column A
            .Cells(1, 31) = TextBox1.Value   'the textbox1 to show up in the same row as the combobox value but in column AE
            .Resize(1, .Columns.Count + 5).Borders.LineStyle = xlContinuous  'Finally I would like the columns up to AM have borders (+5 past the fill down range).
        End With
    End With
End If

РЕДАКТИРОВАТЬ: внесены изменения в соответствии с последним обсуждением ...

...