ComBox1 的非标准 "Conditional" 配置
Non-Standard "Conditional" configuration of ComBox1
我的问题是如何使用名为 PropLocs
的命名范围工作簿中的 propIDs
填充 cmbSelProp ComboBox
。感兴趣的列“A”列包含 propIDs
的列表,列“K”包含每个 propID
的 ActiveStatus
。我也有两个感兴趣的列的命名范围,分别为 propIDs
和 actStatus
。 actStatus
,列“K”,范围的一部分在添加属性并随后初始化并自动生成年度工作表时设置为 True/False。
我只希望 cmbRptPrpID
填充 propIDs
具有 actStatus = True
.
在过去的几周里,我花了很多时间盲目地进行网络搜索,查看 links,并尝试各种 links 的建议,但没有成功。我,就像“在暴风雪中迷失了盲人!”
与我正在处理的问题相关的更广泛的问题以及理解如何解决和理解手头的问题将有助于我未来的应用程序开发。
更新
提到的 2 个附加范围在“A”和“K”列中
更新 2
业务逻辑
我正在开发的应用程序使用 multipage
对象,并且有一对 dynamic comboboxes
、cmbSelProp
和 cmbYears
,例如,用于 select active worksheet
并输入每月费用、view/generate 报告等。cbmSelProp
select 是 属性 ID,cbmSplProp_Change() event
配置 cmbYears list values
基于“K”列中的变量 wsStartYr
和当前日历年的 wbCurYear
。年度工作表的工作表 TabName
为 propId_Year
,并使用变量 wsA = pID & "_" & wsYr
编辑 select。我不希望propIDs
和Inactive 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
命名范围
结果
我的问题是如何使用名为 PropLocs
的命名范围工作簿中的 propIDs
填充 cmbSelProp ComboBox
。感兴趣的列“A”列包含 propIDs
的列表,列“K”包含每个 propID
的 ActiveStatus
。我也有两个感兴趣的列的命名范围,分别为 propIDs
和 actStatus
。 actStatus
,列“K”,范围的一部分在添加属性并随后初始化并自动生成年度工作表时设置为 True/False。
我只希望 cmbRptPrpID
填充 propIDs
具有 actStatus = True
.
在过去的几周里,我花了很多时间盲目地进行网络搜索,查看 links,并尝试各种 links 的建议,但没有成功。我,就像“在暴风雪中迷失了盲人!”
与我正在处理的问题相关的更广泛的问题以及理解如何解决和理解手头的问题将有助于我未来的应用程序开发。
更新
提到的 2 个附加范围在“A”和“K”列中
更新 2
业务逻辑
我正在开发的应用程序使用 multipage
对象,并且有一对 dynamic comboboxes
、cmbSelProp
和 cmbYears
,例如,用于 select active worksheet
并输入每月费用、view/generate 报告等。cbmSelProp
select 是 属性 ID,cbmSplProp_Change() event
配置 cmbYears list values
基于“K”列中的变量 wsStartYr
和当前日历年的 wbCurYear
。年度工作表的工作表 TabName
为 propId_Year
,并使用变量 wsA = pID & "_" & wsYr
编辑 select。我不希望propIDs
和Inactive 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
命名范围
结果