gpt4 book ai didi

vba - 如何为多个复选框执行相同的代码来设置复选框值?

转载 作者:行者123 更新时间:2023-12-04 20:12:18 25 4
gpt4 key购买 nike

我在我的 Excel 用户表单中有几个复选框(总共 10 个),它们都应该具有相同的行为。这意味着,当我重新加载表单时,复选框的值应该会改变,具体取决于电子表格中具有实际选定行的值。

以下代码适用于一个复选框:

If Sheet1.Cells(iRow, Sheets("aux").Range("B21")) = "X" Then
cbERW.Value = True
ElseIf Sheet1.Cells(iRow, Sheets("aux").Range("B21")) = "?" Then
cbERW.Value = Null
Else
cbERW.Value = False
End If

如何以最简单的方式为多个复选框执行此操作?但是对于每个复选框,引用的行和列都可能发生变化。例如,下一个看起来像这样( cbHSAW 而不是 cbERW ,列 B22 而不是 B21 ):
If Sheet1.Cells(iRow, Sheets("aux").Range("B22")) = "X" Then
cbHSAW.Value = True
ElseIf Sheet1.Cells(iRow, Sheets("aux").Range("B22")) = "?" Then
cbHSAW.Value = Null
Else
cbHSAW.Value = False
End If

有人知道如何轻松做到这一点吗?

最佳答案

您可以将测试语句包装在一个函数中并传递特定复选框的范围。然后设置返回结果可以作为复选框的值。以下需要针对您的表单和范围进行修改,但会给出所需的结果。

'Function to test the value of the range
Private Function SetCheckBox(ByVal rng As Range)
If rng.Value = "X" Then
SetCheckBox = True
ElseIf rng.Value = "?" Then
SetCheckBox = Null
Else
SetCheckBox = False
End If
End Function


Private Sub UserForm_Initialize()
'Set value for each checkbox by passing its range to the function
CheckBox1.Value = SetCheckBox(Sheets("aux").Range("A1"))
CheckBox2.Value = SetCheckBox(Sheets("aux").Range("A2"))
CheckBox3.Value = SetCheckBox(Sheets("aux").Range("A3"))
CheckBox4.Value = SetCheckBox(Sheets("aux").Range("A4"))
End Sub

enter image description here

关于vba - 如何为多个复选框执行相同的代码来设置复选框值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com