verificacion propiedades programar para opcion macro insertar formulario desmarcar control comprobacion celda casillas casilla boton excel vba excel-vba excel-2010

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