我有一个包含成本代码的工作表。在定义成本代码的列之后,我有多个任务数据列,这些数据列将获得一个真值或假值,以确定该成本代码是否适用于该列所标识的任务。
我有一个包含700多个复选框的用户表单,我希望将这些复选框动态链接到每个作业的数据列。在向用户查询信息后,我们确定哪一列数据用于特定作业,并将其存储在变量ACTUALCOLUMN中。
当我加载并初始化用户表单时,我循环遍历用户表单上的所有复选框控件。复选框名称在P列的成本代码工作表数据中有一个匹配条目(静态)。我可以查询哪一行具有匹配的成本代码名称,但当我尝试将复选框链接到同一行的列上的单元格时,我收到一个运行时错误438“对象不支持此属性或方法”。
我已经尝试了多种方法来编写与复选框链接的单元格例程周围的代码,似乎没有一个适合我。
目的是让用户选择适用于表单的所有成本代码的复选框,并使用相应的值(假设为真或假)填充成本代码工作表中的链接单元格。
有没有可能把用户表单上现有的复选框链接到工作表上?我能找到的所有例子都更多地与实际工作表上的复选框以及链接到同一工作表上的单元格有关。
Dim wb as Workbook
Dim ws as Worksheet
Dim CheckboxRange as Range
Dim ChkBox as MSForms.control
Dim EnableChkBoxes as Boolean
set wb = thisworkbook
set ws11 = wb.sheets("COST CODES")
'Userform where all the checkboxes are is called ActivateCC - There are a total of 700+ checkboxes within 'the form on multi-sheet tabs.
For Each ChkBox In ActivateCC.Controls
If TypeName(ChkBox) = "CheckBox" Then
Set ChkBoxRange = ws11.Range("P:P").Find(What:=ChkBox.Name, LookIn:=xlValues)
If Not ChkBoxRange Is Nothing Then
If EnableChkBoxes = True Then
If ws11.Cells(ChkBoxRange.Row, 17).Value = "Yes" Then ChkBox.Enabled = True Else ChkBox.Enabled = False 'Checks an administrator column for valid CC's
End If
With ChkBox
.LinkedCell = ws11.Cells(ChkBoxRange.Row, ACTUALCOLUMN).Address '<---ERROR HERE
End With
End If
End If
Next ChkBox
1条答案
按热度按时间aiazj4mn1#
这里有两个问题:
1.您需要使用
ControlSource
属性(而不是LinkedCell
)1.您还应该指定工作表,否则在分配地址时,cb将链接到任何活动的工作表(使用
ws11.Cells(ChkBoxRange.Row, ACTUALCOLUMN).Address(0,0,,1)