Как мне настроить ComboBox равным определенному столбцу для пользовательской формы? - PullRequest
0 голосов
/ 03 мая 2019

Я все еще довольно новичок в VBA, но я создаю пользовательскую форму, которая будет вводить данные. Но я также хочу иметь ComboBox в пользовательской форме, представляющей месяцы. И каждый месяц предположим представлять колонку. Например, если я выберу январь в пользовательской форме, то он поместит данные в столбец K. Я хочу, чтобы от 1 до 12 представляли столбец от I до T

Private Sub CommandButton1_Click

Dim ws As Worksheet
Dim lrCal As Long

lrCal = sheets("TestCal").Cells(7,Columns.Count).End(xlToLeft).Column + 1 

With sheets("TestCal")
     .Cells(7, lrCal).Value = tbApple.Text
     .Cells(8, lrCal).Value = tbOrange.Text
     .Cells(12,lrCal).Value = tbBread.Text
     .Cells(13,lrCal).Value = tbJam.Text 
End With

End Sub

Прямо сейчас идет к следующей доступной ячейке. Но я хочу, чтобы он пошел в столбец, который я выбрал.

Private Sub cboMonth_Change()

dim cboMonth as ComboBox
dim i as long
dim ws as worksheet

Set ws = ThisWorkbook.sheets("TestCal")


For i = 1 to 12

Next

Я застрял на этой части, не знаю, как ее настроить. Как бы настроить каждое число для представления каждого столбца?

1 Ответ

0 голосов
/ 03 мая 2019

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

Option Explicit

Private Sub CommandButton1_Click()
    Debug.Print Application.Match(ComboBox1.Value, ComboBox1.List, 0)
End Sub

Private Sub UserForm_Initialize()
    With Sheets(1)
        Me.ComboBox1.List = Array("Jan","Feb","Mar")
    End With
End Sub

Вы можете проверить вышеизложенное и увидеть, что позиция списка (номер местоположения в массиве) отображается в непосредственном окне.


Так, если январь находится в столбце 11 (K),Вы можете вывести свои данные как:

Private Sub CommandButton1_Click()
    '11-1 = 10, you would need to find last row in column for this:
    Sheets(1).Cells(LastRow+1,10+Application.Match(ComboBox1.Value, ComboBox1.List, 0)).value = Me.TextBox1.Value
End Sub

Вы также можете сделать это без комбинированного списка, используя Match() или Find().

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