Evitar ejecutar macro si hay celdas vacías.

Tengo la siguiente macro:

Sub guardar_entrada()
'
' guardar_entrada Macro
'
'
Application.ScreenUpdating = False
Application.EnableEvents = False
    Range("F5:F12").Select
    Selection.Copy
    Sheets("Registros").Visible = True
    Sheets("Registros").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Rows("4:4").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A4").Select
    Sheets("movimientos").Visible = True
    Sheets("Movimientos").Select
    Range("F5").Select
    Selection.ClearContents
    Range("F6").Select
    Selection.ClearContents
    Range("F7").Select
    Selection.ClearContents
    Range("F8").Select
    Selection.ClearContents
    Range("F5").Select
    Selection.ClearContents
    Dim CeldasVacias As Boolean
    ActiveWorkbook.Save
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

Y necesito que cuando la ejecuto, si hay celdas vacias, no lo permita y me informe de ello.

Busque por varios lados, pero no encontré la solución.

¿Qué puedo hacer?

1 Respuesta

Respuesta
1

Prueba con algo parecido a:

    If WorksheetFunction.CountA([F5:F12]) <> 8 Then
        MsgBox "Hay " & CStr(8 - WorksheetFunction.CountA([F5:F12])) & " celda/s vacía/s en el rango F5:F12" & vbNewLine & vbNewLine & "Se termina la ejecución del código VBA", vbOKOnly + vbCritical
        Exit Sub
    End If

que habría que situar al principio del Sub.

Quizás convendría cualificar un poco más el rango F5:F12 (por ejemplo, [Hoja1!F5:F12]). Sé que soy un poco maniático con este tema, pero es que me da un poco de vértigo ver rangos tan poco cualificados.

Saludos_

¡Gracias!

Lo pude solucionar con este código:

existe = False
    For Each F In Range("F5:F8")
        If F.Value = "" Then
            celdas = celdas & " " & F.Address(False, False)
            existe = True
        End If
    Next
    If existe Then
        MsgBox "Falta introducir informacion en alguna celda : " & celdas
        Exit Sub
    End If

Muchas gracias por tu tiempo.

Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas