Llenar campos obligatorios para ejecutar una macro...

Tengo esta macro en la cual me guarda la información de algunas celdas que se llenan, pero quisiera que no me permita ejecutar la macro si alguna de esas celdas no están llenas.

Sub CREA_NUEVO_CLIENTE()
'
' CREA_NUEVO_CLIENTE Macro
' AGREGA NUEVO CLIENTE
'
' Acceso directo: Ctrl+Mayús+A
Application.ScreenUpdating = False
Sheets("CLIENTES REGISTRADOS ").Unprotect password:="28021990"
Application.ScreenUpdating = False
    Range("D4").Select
    Selection.Copy
    Sheets("CLIENTES REGISTRADOS ").Select
    Range("D4002").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Sheets("NUEVO CLIENTE").Select
    Range("D6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("CLIENTES REGISTRADOS ").Select
    Range("B4002").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Sheets("NUEVO CLIENTE").Select
    Range("D7:D12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("CLIENTES REGISTRADOS ").Select
    Range("E4002").Select
    Range("E4002").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Range("Tabla3").Select
    Range("B4002").Activate
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("CLIENTES REGISTRADOS ").ListObjects("Tabla3").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("CLIENTES REGISTRADOS ").ListObjects("Tabla3").Sort. _
        SortFields.Add Key:=Range("Tabla3[FECHA DE REGISTRO]"), SortOn:= _
        xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("CLIENTES REGISTRADOS ").ListObjects("Tabla3"). _
        Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        Application.ScreenUpdating = False
    End With
    Range("B2").Select
    Sheets("NUEVO CLIENTE").Select
    Range("D4:D5").Select
    Selection.ClearContents
    Range("D7").Select
    Selection.ClearContents
    Range("D9:D12").Select
    Selection.ClearContents
    Range("D4").Select
    Sheets("CLIENTES REGISTRADOS ").Protect password:="28021990"
    Application.ScreenUpdating = False
End Sub

tenia este codigo:

if range("D7")<>"" AND range("D9")<>"" AND range("D10")<>""AND range("D11")<>""AND range("D12")<>"" then
'SE ejecuta mi operación
else
msgbox("error!!!")
end if

Si me funciona si no estan llenas la celdas, pero al llenar la celdas me sale un mensaje de error porque no coincide los tipos.. Orienten-me en donde ando mal.

Respuesta
2

El problema puede ser porque en alguna de las celdas tienes error, por ejemplo #N/A, #¿NOMBRE?, etc

Para resolverlo puedes poner lo siguiente:

If Not IsError(Range("D7")) And Not IsError(Range("D9")) And _
   Not IsError(Range("D10")) And Not IsError(Range("D11")) And _
   Not IsError(Range("D12")) Then
    '
    If Range("D7") <> "" And Range("D9") <> "" And _
        Range("D10") <> "" And Range("D11") <> "" And Range("D12") <> "" Then
        'SE ejecuta mi operación
    Else
        MsgBox ("error!!!")
    End If
    '
Else
    '
    MsgBox "La celdas tienen error"
    '
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas