【发布时间】:2020-07-21 02:45:00
【问题描述】:
这里是新的(第一篇文章),对 vba excel 也很陌生,我遇到了一个我正在努力解决的绊脚石。如果我能在这里找到帮助,我将非常感激!
我有一个包含 90 个复选框的用户表单。在表单初始化时,我想将所有复选框设置为 TRUE 或 FALSE,具体取决于特定工作表上的单元格中包含的值,我可以这样做,我现在必须为另外 89 个复选框执行此操作,其中当前的格式将变得笨拙。
我正在寻找有关如何以更简洁的方式实现这一点的建议。
谢谢!
Private Sub UserForm_Initialize()
Dim chRange As Range
Dim ws As Worksheet
Dim PDI_No As String
Dim Row As Integer
Dim rfind1 As Range
Dim Col_Ltr1 As String
Set ws = Worksheets("Master_Log")
Set chRange = ws.Range("A:A")
PDI_No = UpdateRecord.ComboBox1.Value
Row = Application.WorksheetFunction.Match(PDI_No, chRange, 0) 'finds row number
With Worksheets("Master_Log").Range("A1:DZ1")
Set rfind1 = .find(What:=CheckBox1.Caption, LookAt:=xlWhole, MatchCase:=False,
SearchFormat:=False) 'finds column number
Col_Ltr1 = Split((Columns(rfind1.Column).Address(, 0)), ":")(0) 'changes column number to a
letter
cellposition1 = Col_Ltr1 & Row 'range value
If ws.Range(cellposition1) = CheckBox1.Caption Then
CheckBox1.Value = True
Else
CheckBox1.Value = False
End If
End With
End Sub
【问题讨论】:
-
使用循环来循环每个使用
match的值而不是find。这些在表格上吗? -
什么是
UpdateRecord? -
他们被命名为
CheckBox1,CheckBox2.. ..CheckBox90? -
顺便说一句,您知道使用选中的列表框比使用 90 个复选框更好吗?
-
在循环中使用类似
Me.Controls("Checkbox" & i)的东西