propiedades - programar casillas de verificacion excel
¿Cómo uso las casillas de verificación en una declaración IF-THEN en Excel VBA 2010? (4)
Necesito usar el valor de las casillas de verificación para una instrucción IF-THEN. En función de lo que el usuario verifique, la forma en que tengo que calcular las cosas cambia. Sin embargo, no puedo entender cómo usar los valores de la casilla de verificación o cómo detectarlos. Aquí está el código que tengo hasta ahora:
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
Lo que quiero que haga, al igual que una prueba, es si la casilla de verificación "Tiempo" está marcada, y luego se presiona el botón para continuar, quiero que diga algo como "YAY", usando una instrucción IF-THEN. Si la casilla de verificación "Tiempo" no está marcada y presiona continuar, me gustaría decir "AWW ...".
Esto es lo que intenté que sucediera, y no está funcionando.
Sub DataInput()
If ActiveSheet.Shapes.Range(Array("Check Box 1")).Value = True Then
MsgBox ("Yay")
Else: MsgBox ("Aww")
End If
End Sub
¿Qué estoy haciendo mal?
Puedes probar algo como esto ...
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
If Sheets("Sheet1").OLEObjects("CheckBox1").Object.Value = True Then
Creo que Tim tiene razón. Usted tiene un control de formulario. Para eso tienes que usar esto
If ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 1 Then
Una casilla de verificación tiene una celda vinculada, que contiene el verdadero / falso que representa el estado de la casilla de verificación. Es mucho más fácil hacer referencia al valor de esta celda que el valor del objeto incrustado que es la casilla de verificación.
Manualmente: haga clic con el botón derecho en la casilla de verificación, elija Formato, haga clic en el cuadro Celda vinculada y seleccione la celda para contener el valor de la casilla de verificación.
En codigo:
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