提问人:Syndesis 提问时间:10/31/2023 更新时间:11/13/2023 访问量:41
使用 3 个 OptionButton - 操作和变量定义问题
Using 3 OptionButtons - trouble with actuation and variable definition with proceedures
问:
我的目标:使用单选按钮或选项按钮选择预定义的单元格,并用字母/数字指示符填充它们(在本例中为“N1”),使用 If-Then-Else,允许用户选择一组不同的单元格,但重复使用 N1 指示符。
问题 1:声明变量后,我总是在过程的第一行收到错误,指出变量未定义。
问题 2:使用 activeX 控件 optionButtons,因为它们允许与宏一起使用,因此在选择时不会激活它们。我可以使用表单按钮,但它们不适用于宏。
我已经多次重写了变量的声明(我现在是正确的),但是当过程的第一行运行时似乎仍然打嗝(已经写了几个变体以尝试纠正)。 关于问题的根源有什么想法吗?显示工作表、属性框和代码的屏幕截图
答:
0赞
user3598756
11/1/2023
#1
坚持使用ActiveX选项按钮,您可以在代码之后(放置在相关的工作表代码窗格中):
Option Explicit
Private Sub opt_ASHRAE_Click()
N1Variable
End Sub
Private Sub opt_CECT24_Click()
N1Variable
End Sub
Private Sub opt_IECC_Click()
N1Variable
End Sub
Private Sub opt_NONE_Click()
N1Variable
End Sub
Sub N1Variable()
With Me
If .opt_IECC Then
.Range("D3, D6").Value = "N1"
ElseIf .opt_ASHRAE Then
.Range("D4, D7").Value = "N1"
ElseIf .opt_CECT24 Then
.Range("D5, D8").Value = "N1"
Else
.Range("D3:D9").ClearContents
End If
End With
End Sub
您可以注意到您需要第四个 OptionButton(我称之为“opt_NONE”)来触发范围内容删除
评论
0赞
Syndesis
11/4/2023
谢谢 user3598756,我尝试了您的示例,但按钮仍然无法操作,我错过了什么吗?我已经在工作表中将代码作为对象运行,它应该在模块中关闭吗?
0赞
Syndesis
11/12/2023
#2
感谢大家的帮助,我能够解决问题。正如建议的那样,我确实添加了第 4 个按钮来清除内容,但我发现了一种不同的策略来激活按钮并执行该功能:
Sub CheckRadioButton()
If Worksheets(5).Shapes("Option Button 18").ControlFormat.Value = xlOn Then
Range("E6,E9") = "N1"
Range("F7,F10") = "N2"
Range("G8,G11") = "N3"
ElseIf Worksheets(5).Shapes("Option Button 19").ControlFormat.Value = xlOn Then
Range("E7,E10") = "N1"
Range("F8,F11") = "N2"
Range("G9,G12") = "N3"
ElseIf Worksheets(5).Shapes("Option Button 20").ControlFormat.Value = xlOn Then
Range("E8,E11") = "N1"
Range("F9,F12") = "N2"
Range("G6,G9") = "N3"
Else: Worksheets(5).Shapes("Option Button 21").ControlFormat.Value = xlOn
Range("E6:G12").ClearContents
End If
End Sub
评论
opt_IECC
OPT_IECC
Option Explicit
Me.opt_IECC
Me