如何在Excel VBA 2010中的IF-Then语句中使用复选框?

问题描述 投票:0回答:6
我需要使用复选框的值进行if-then语句。根据用户检查的内容,我必须计算变化的方式。但是,我不知道如何使用复选框值或如何检测它们。这是我到目前为止的代码:

Private Sub Workbook_Open() Range("E1:F7,A1:A4,B1:B4,C1:C3").Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Range("A1").Select Range("A1") = "Time" Range("B1") = "Specimen Shape" Range("C1") = "Data Type" Range("A1:C1").Font.Bold = True Range("E1") = "Owner" Range("E2") = "Experiment Date" Range("E3") = "Specimen ID" Range("E4") = "Contaminant" Range("E5") = "Leachant" Range("E6") = "Temperature" Range("E7") = "Regression Title" Range("E1:E7").Font.Bold = True Columns("A:E").EntireColumn.EntireColumn.Autofit 'Formatting Column A Columns("A").EntireColumn.ColumnWidth = 9.71 ActiveSheet.CheckBoxes.Add(4, 14.5, 72, 17.25).Select Selection.Characters.Text = "Days" Range("A6").Select ActiveSheet.CheckBoxes.Add(4, 30.5, 73.5, 17.25).Select Selection.Characters.Text = "Hours" ActiveSheet.CheckBoxes.Add(4, 45.75, 52.5, 17.25).Select Selection.Characters.Text = "Minutes" 'Formatting Column B ActiveSheet.CheckBoxes.Add(58, 14.5, 72, 17.25).Select Selection.Characters.Text = "Cylinder" ActiveSheet.CheckBoxes.Add(58, 30.5, 73.5, 17.25).Select Selection.Characters.Text = "Wafer" ActiveSheet.CheckBoxes.Add(58, 45.75, 52.5, 17.25).Select Selection.Characters.Text = "Irregular" 'Formatting Column C Columns("C").EntireColumn.ColumnWidth = 12.71 ActiveSheet.CheckBoxes.Add(140.5, 14.5, 72, 17.25).Select Selection.Characters.Text = "Incremental" ActiveSheet.CheckBoxes.Add(140.5, 30.5, 72, 17.25).Select Selection.Characters.Text = "Cumulative" Columns("F").EntireColumn.ColumnWidth = 60 Range("A1:C1").HorizontalAlignment = xlCenter Range("F1").Select Dim btn As Button Dim rng As Range With Worksheets("Sheet1") Set rng = .Range("A9:C9") Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height) With btn .Caption = "After making your selections above, click this button to continue." .AutoSize = True .OnAction = "DataInput" End With End With End Sub
我想做的事情,就像测试一样,是否检查了“时间”复选框,然后按下按钮继续进行,我希望它使用IF-then语句说“ Yay”之类的话。如果未检查“时间”复选框,然后按下继续,我想说“ aww ...”。

这是我试图实现这一目标的原因,而且它不起作用。

Sub DataInput() If ActiveSheet.Shapes.Range(Array("Check Box 1")).Value = True Then MsgBox ("Yay") Else: MsgBox ("Aww") End If End Sub

我做错了什么?
    

If Sheets("Sheet1").OLEObjects("CheckBox1").Object.Value = True Then
vba excel excel-2010
6个回答
32
投票
我相信蒂姆是对的。您有一个表单控制。为此,您必须使用此
If ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 1 Then

您可以尝试这样的事情。

Dim cbTime Set cbTime = ActiveSheet.CheckBoxes.Add(100, 100, 50, 15) With cbTime .Name = "cbTime" .Characters.Text = "Time" End With If ActiveSheet.CheckBoxes("cbTime").Value = 1 Then 'or just cbTime.Value 'checked Else 'unchecked End If

5
投票

A复选框具有一个链接的单元格,其中包含代表复选框状态的真/错误。与复选框的嵌入式对象的值相比,引用该单元格的值要容易得多。
手机:右键单击复选框,选择格式,单击链接的单元框中,然后选择单元格以包含复选框值。


4
投票

Set cbTime = ActiveSheet.CheckBoxes.Add(100, 100, 50, 15) With cbTime .Value = xlOff ' = unchecked xlOn = checked .LinkedCell = "$A$1" End With

Sub Datainput() 'Checkbox values are 0 (false), 1 (true), 2 (changed or grey) If activesheet.CheckBoxes("Check Box 1").value = 1 then Msgbox ("Yay") Else: Msgbox("Aww") End if End Sub



3
投票
Worksheets("SheetName").CB_Checkboxname.value
直接访问复选框
直接与其他对象无关。
    

1
投票
似乎在ActiveX复选框控件的VBA宏代码中您使用

IF(ActivesHeet.oleObjects(“ chackbox1”)。object.value = true)

对于表单复选框控件,您使用

0
投票

如果ActiveSheet.hapes(“复选框1”)。controlformat.value =检查

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.