Excel vba:根据列A中的单元格获取列B上的单元格区域
我有一个从所有工作表获取信息的vba脚本,将它们添加到不同的combobox,每当从combobox中select一个值,会发生不同的事情。
第一个组合我填充如下:
Private Sub Workbook_Open() Dim oSheet As Excel.Worksheet Dim oCmbBox As MSForms.ComboBox Set oCmbBox = ActiveWorkbook.Sheets(1).cmbSheet oCmbBox.Clear For Each oSheet In ActiveWorkbook.Sheets If oSheet.Index > 1 Then oCmbBox.AddItem oSheet.Name End If Next oSheet End Sub
第二个combobox正在执行以下操作:
Private Sub cmbSheet_Change() Dim oSheet As Excel.Worksheet 'Report combo box Dim oCmbBox As MSForms.ComboBox Set oCmbBox = ActiveWorkbook.Sheets(1).cmbSheet 'Tech combo box Dim tCmbBox As MSForms.ComboBox Set tCmbBox = ActiveWorkbook.Sheets(1).techCombo tCmbBox.Clear Dim rng As Range Set rng = Sheets(oCmbBox.Value).Range("A2:A10") For Each cell In rng If Not IsEmpty(cell.Value) Then tCmbBox.AddItem cell.Value End If Next cell ActiveWorkbook.Sheets(1).techCombo.ListIndex = 0 End Sub
我有一个表格:
现在,从techCombo(即Teknik_1)中select一个值我想要第三个combobox填充数据范围从B6 – B9。
那可能吗??
提前致谢!
鉴于您提供的示例数据,这样的事情应该为你工作。 请注意,此代码位于Sheet1代码模块中:
Private Sub techCombo_Change() Dim ws As Worksheet Dim rFound As Range Dim cbo3 As ComboBox Set cbo3 = Me.ComboBox3 'Change to the actual name of the third combobox cbo3.Clear With Me.cmbSheet If .ListIndex = -1 Then Exit Sub 'Nothing selectd in cmbSheet Set ws = ActiveWorkbook.Sheets(.Text) End With With Me.techCombo If .ListIndex = -1 Then Exit Sub 'Nothing selected in techCombo Set rFound = ws.Columns("A").Find(.Text, ws.Cells(ws.Rows.Count, "A"), xlValues, xlWhole) End With If Not rFound Is Nothing Then If Trim(Len(rFound.Offset(2, 1).Text)) = 0 Then cbo3.AddItem rFound.Offset(1, 1).Value Else cbo3.List = ws.Range(rFound.Offset(1, 1), rFound.Offset(1, 1).End(xlDown)).Value End If End If End Sub
Private Sub ComboBox21_Change() Dim TeckCMBxIndex TeckCMBxIndex = ActiveWorkbook.Sheets(3).ComboBox21.ListIndex Select Case TeckCMBxIndex Case 0 ActiveWorkbook.Sheets(3).ComboBox22.Clear Exit Sub Case 1 Set rng = Worksheets("SHEET3").Range("B6:B10") Case 2 Set rng = Worksheets("SHEET3").Range("B11:B15") End Select ActiveWorkbook.Sheets(3).ComboBox22.Clear For Each cell In rng If Not IsEmpty(cell.Value) Then ComboBox22.AddItem cell.Value End If Next cell End Sub
希望这应该可以帮助你…我试过了,它的工作forms。 请注意,我有Sheet3中的Values和combobox。