ComBox1 的非标准 "Conditional" 配置

Non-Standard "Conditional" configuration of ComBox1

我的问题是如何使用名为 PropLocs 的命名范围工作簿中的 propIDs 填充 cmbSelProp ComboBox。感兴趣的列“A”列包含 propIDs 的列表,列“K”包含每个 propIDActiveStatus。我也有两个感兴趣的列的命名范围,分别为 propIDsactStatusactStatus,列“K”,范围的一部分在添加属性并随后初始化并自动生成年度工作表时设置为 True/False。
我只希望 cmbRptPrpID 填充 propIDs 具有 actStatus = True.

在过去的几周里,我花了很多时间盲目地进行网络搜索,查看 links,并尝试各种 links 的建议,但没有成功。我,就像“在暴风雪中迷失了盲人!”

与我正在处理的问题相关的更广泛的问题以及理解如何解决和理解手头的问题将有助于我未来的应用程序开发。

更新

提到的 2 个附加范围在“A”和“K”列中

更新 2

业务逻辑 我正在开发的应用程序使用 multipage 对象,并且有一对 dynamic comboboxescmbSelPropcmbYears,例如,用于 select active worksheet 并输入每月费用、view/generate 报告等。cbmSelPropselect 是 属性 ID,cbmSplProp_Change() event 配置 cmbYears list values 基于“K”列中的变量 wsStartYr 和当前日历年的 wbCurYear。年度工作表的工作表 TabNamepropId_Year,并使用变量 wsA = pID & "_" & wsYr 编辑 select。我希望propIDsInactive status作为cmbSelProp列表值的一部分出现.

这是一个link到,与这个问题有关。

我真的需要一些帮助来解决这个问题! 提前感谢你的帮助。 这是我一直在尝试使用的代码。

        selectedRow = cmbSelProp.ListIndex + 3
        
        For Each cPart In wsCntrl.Range(Range("propIDs"), Range("A" & Rows.Count).End(xlUp))
         pAct = wsCntrl.Cells(selectedRow, "K").Value
          With Me.cmbSelProp
            If pAct = "True" And cPart.Value <> "" Then cmbSelProp.AddItem cPart.Value
          End With
        Next cPart

您的代码中存在许多问题。我不会分解所有 errors/issues,而是向您展示我将如何做。

从你之前的问题来看,我认为你的组合框在用户表单上。

我创建了一个带有组合框和加载它的按钮的用户窗体。您可以根据需要更改调用加载函数的方式。

用户表单代码

Option Explicit

Private Sub btnTest_Click()
    Load_cmbSelProp
End Sub

Private Sub Load_cmbSelProp()
    Dim propIDs As Range
    Dim actStatus As Range
    Dim rw As Long

    Set propIDs = ThisWorkbook.Names("propIDs").RefersToRange
    Set actStatus = ThisWorkbook.Names("actStatus").RefersToRange
    Me.cmbSelProp.Clear
    For rw = 1 To propIDs.Count
        If propIDs.Cells(rw, 1).Value2 <> vbNullString Then
            If actStatus.Cells(rw, 1).Value2 = True Then
                Me.cmbSelProp.AddItem propIDs.Cells(rw, 1).Value2
            End If
        End If
    Next
End Sub

命名范围

结果