Insertar checkbox en excel automáticamente

Necesito un poco de orientación

Tengo un excel donde la columna A tiene datos tanto de texto como de números... Me explico:
A1= texto 
A2=numero
A3=numero
A4=texto
A5=numero
...
Necesito que en la columna "H" se inserte un checkbox solo si la columna A contiene números. Esa columna tiene formato general.
A la vez que ese checkbox aparezca automáticamente al agregar más datos (los copian y pegan en el excel) así que trato que el checkbok aparezca con macros
Dejo la "idea" que tengo, la cual obviamente no funciona pero me gustaría que por favor alguien me guie. Intente con access pero no puedo agregar checkboxs a una tabla vinculada de excel :(
Sub insertar_casillas()
Dim i As Integer
For i = 1 To Sheets("Datos1").Range("H" & Rows.Count).End(xlUp).Row
If IsNumeric(Cells(i, 1)) Then
Cells(i, 8) = "insertar CheckBox" ------> aqui es donde tengo la duda del codigo
End If
Next i
End Sub

2 respuestas

Respuesta
1

Prueba de esta forma:

Sub InsertarCheckBox()
Dim Celda As Range
Dim UltimaFila As Long
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
For Each Celda In Range("A1:A" & UltimaFila)
    If IsNumeric(Celda.Value) Then
        With Range("H" & Celda.Row)
            ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1", Link:=False, _
            DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=30, Height:=18
        End With
    End If
Next Celda
End Sub

Ya tú con las propiedades ve el ancho/alto y la posición exacta con referencia a la celda (top y Left)

Comentas

Abraham Valencia

PD: He usado los "CheckBox" de los controles ActiveX

¡Gracias! Me cabecie por horas, de verdad te lo agradezco mucho!!

Je je je, de nada y salu2

Abraham Valencia

Te vuelvo a molestar... pasa que al iniciar la macro los checkbox se pegan uno sobre otro, habra alguna manera de que solo detecte cuando no estan? Pensaba poner el valor verdadero o falso en una columna al lado de los check y ahi verificar si se debe llenar o no, quizas por eso mi idea era con cells. Si pudieras aclararme te lo agradeceria

Hol.a

Uses "Range" o "Cells" el efecto es el mismo. Me parece que tu salida de colocar un valor en una columna auxiliar (que incluso puedes ocultar) es lo idóneo ya que lo otro es detectar que hay un objeto sobre una celda (los objetos NO están nunca dentro de las celdas) y detectar eso no es poca cosa y requiere programar bastante más que el tiempo que uno puede dar para ayudar.

Primero, borra todos los "CheckBox" y prueba esto:

Sub InsertarCheckBox()
Dim Celda As Range
Dim UltimaFila As Long
Application.ScreenUpdating = False
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
For Each Celda In Range("A1:A" & UltimaFila)
    If IsNumeric(Celda.Value) And Range("I" & Celda.Row) <> 1 Then
        With Range("H" & Celda.Row)
            ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1", Link:=False, _
            DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=30, Height:=18
        End With
        Range("I" & Celda.Row) = 1
    End If
Next Celda
Application.ScreenUpdating = True
End Sub

Estoy usando un número uno en la columna "I", ya tú adáptalo a tu necesidad.

Salu2

Abraham Valencia

Respuesta
1

Dona Pashona,

Si sólo deseas mostrar el checkbox para indicar si esta activo o no, puedes usar la siguiente fórmula en la columna H:

[H2] =SI(A2="";"";SI(ESNUMERO(A2);"R";"£"))

Las celdas que contengan esa fórmula (Columna H) deben estar con tipo de fuente "Wingdings 2", para que tengan la apariencia de CheckBox, así como muestra la imagen.

Espero que te sirva de orientación. Cualquier consulta estaré pendiente.

Ander GS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas