Excel VBA:如果满足条件,如何使用每行的单元格值填充组合框

Excel VBA: How to populate a combobox with cell values from each row if conditions are met

我正在尝试用每行 B 列中的值填充组合框,但前提是满足以下条件:

  1. B 列中的单元格不是 empty/has 值。
  2. 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