Excel VBA:如果满足条件,如何使用每行的单元格值填充组合框
Excel VBA: How to populate a combobox with cell values from each row if conditions are met
我正在尝试用每行 B 列中的值填充组合框,但前提是满足以下条件:
- B 列中的单元格不是 empty/has 值。
- H 列中的单元格 empty/has 没有值。
代码只需要考虑第 3 行之后的值(因为那些是 table 标题)并且它需要能够根据工作表中的变化进行调整。
如果有人有一些提示,我将不胜感激!我已经为此苦苦挣扎了好几天。
如果有帮助,我可以 post 我的代码,但我尝试过所有不同的东西,结果一团糟。
您可以试试下面的代码。我把它放在 Initialize 事件处理程序中。你可能需要改变它。请将 ComboBox1 重命名为您的组合框的名称。
Private Sub UserForm_Initialize()
Dim lngLastRow As Long 'index of bottom row of ActiveSheet
Dim rngSource As Range 'range containing list item candidates
Dim i As Long 'counter used in For...Next
lngLastRow = [A1].SpecialCells(xlLastCell).Row 'get index of bottom row
Set rngSource = [B4].Resize(lngLastRow - 3, 1) 'first cell to bottom row, 1 cell wide
With rngSource.Cells
For i = 1 To lngLastRow - 3 'loop through all cells of rngSource
If Not IsEmpty(.Item(i)) And IsEmpty(.Item(i).Offset(0, 6)) Then 'test col. B and H
ComboBox1.AddItem (.Item(i).Value) 'add col. B value to ComboBox
End If
Next i
End With
End Sub
我正在尝试用每行 B 列中的值填充组合框,但前提是满足以下条件:
- B 列中的单元格不是 empty/has 值。
- H 列中的单元格 empty/has 没有值。
代码只需要考虑第 3 行之后的值(因为那些是 table 标题)并且它需要能够根据工作表中的变化进行调整。
如果有人有一些提示,我将不胜感激!我已经为此苦苦挣扎了好几天。
如果有帮助,我可以 post 我的代码,但我尝试过所有不同的东西,结果一团糟。
您可以试试下面的代码。我把它放在 Initialize 事件处理程序中。你可能需要改变它。请将 ComboBox1 重命名为您的组合框的名称。
Private Sub UserForm_Initialize()
Dim lngLastRow As Long 'index of bottom row of ActiveSheet
Dim rngSource As Range 'range containing list item candidates
Dim i As Long 'counter used in For...Next
lngLastRow = [A1].SpecialCells(xlLastCell).Row 'get index of bottom row
Set rngSource = [B4].Resize(lngLastRow - 3, 1) 'first cell to bottom row, 1 cell wide
With rngSource.Cells
For i = 1 To lngLastRow - 3 'loop through all cells of rngSource
If Not IsEmpty(.Item(i)) And IsEmpty(.Item(i).Offset(0, 6)) Then 'test col. B and H
ComboBox1.AddItem (.Item(i).Value) 'add col. B value to ComboBox
End If
Next i
End With
End Sub