Macro no funciona si la celda es combinada excel vba

¿Macro no funciona si la celda es combinada cual será la razón?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("D4:G40")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
    Target = Target + 1
End If
End Sub

1 respuesta

Respuesta
2

Target es un objeto Range, no es solamente una celda, en Target tienes el conjunto de celdas combinadas.

Entonces cuando modificas la celda D4, y la celda D4 está combina con la celda, por ejemplo, la E4, entonces en target tienes 2 celdas.

Luego tienes esta instrucción

If Target.Count > 1 Then Exit Sub

Target.count es igual a 2, por eso termina la macro.

Debes cambiar > 1 a >2 o al número de celdas que tengas combinadas.


Gracias por tu tiempo Dante

No me funca en esta parte que tengo combinado

le puse  target > 3 y me sale error no coinciden los tipos

Dante las celdas combinadas varían

No veo las columnas. ¿Cuántas celdas tienes combinadas?

¿Y qué quieres hacer?

El evento que pusiste es para cuando seleccionas una celda de este rango:

 Range("D4:G40")

Pero luego tienes esto:

Target = Target + 1

En target tienes un conjunto de celdas, entonces si tienes texto y le sumas un 1, es probable que por eso te envíe el error "no coinciden los tipos"

Haz debbug a tu macro para que veas qué estás haciendo.

Tal vez lo que quieres hacer se resuelve de otra forma.

Dante te comento que estoy tabulando datos.

cuando haga clic en cualquiera de los casilleros  va incrementando de 1 en 1.

'

pero me encuentro con casilleros combinados y no incrementa nada  la macro

Cambia el 10 por el número máximo de celdas que piensas combinar

Private Sub Worksheet_selectionChange(ByVal Target As Range)
    Set rango = Range("D4:G40")
    If Not Intersect(Target, rango) Is Nothing Then
        If Target.Count > 10 Then Exit Sub
        For Each celda In Target
            If Not Intersect(celda, rango) Is Nothing Then
                If celda.MergeCells Then
                    celda.Cells(1, 1).Value = celda.Cells(1, 1).Value + 1
                Else
                    celda.Value = celda.Value + 1
                End If
            End If
        Next
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas