Condiciones para que se guarde el excel-Macros

Bueno me dijeron que haga un macro que haga que al momento de guardar el excel nose pueda por condiciones .
Por ejemplo:
Supongamos que en la columna A hay escrito del 1 al 20 o vacío en cualquiera de esas celdas de la columna A, al momento de guardar no se podrá porque tiene por lo menos uno de esos valores .

2 respuestas

Respuesta
1

Usa esta macro, cópiala y pégala en el modulo thisworkbook de VBA, busca solo en las columna A las celdas que tengan datos si encuentra un numero o un espacio vacío al momento de querer grabar la información no te dejara.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set datos = ActiveSheet.UsedRange
With datos
    For i = 1 To .Rows.Count
        numero = IsNumeric(.Cells(i, 1))
        If numero Then Exit For
    Next i
    cuenta = WorksheetFunction.CountBlank(.Columns(1))
    If cuenta > 0 Or numero Then
        MsgBox ("tienes un valor numerico o un campo vacio esta fila no se grabara"), vbInformation, "AVISO"
        Cancel = True
    End If
End With
End Sub

Gracias james! Eso se aplica si es que hay un numero o vacío no se guardara, te agradecería mucho si es solo para números del 1 al 20 y vacío, si estos están no se guarda, quiero aplicarlo en para las primeras 30 celdas de la columna A

Prueba con esta macro

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set datos = Range("a1:a30")
With datos
    For i = 1 To .Rows.Count
        numero = IsNumeric(.Cells(i, 1)): x=0
        If numero Then
            If .Cells(i, 1) >= 1 And .Cells(i, 1) <= 20 Then
                x = 1
                Exit For
            End If
        End If
    Next i
    cuenta = WorksheetFunction.CountBlank(.Columns(1))
    If cuenta > 0 Or x = 1 Then
        MsgBox ("tienes un valor numerico o un campo vacio esta fila no se grabara"), vbInformation, "AVISO"
        Cancel = True
    End If
End With
End Sub
Respuesta

[Hola

Si quieres que dependiendo de que haya, o no, valores del 1 al 20 o la celda vacía, en la columna "A", estamos hablando de 21 posibilidades para 1'048,576 celdas, lo que quiere decir que hay 22'020,096 de probabilidades que tendría que revisar el VBA de Excel lo que, muy probablemente, haga que el tiempo que tome hacer eso sea un poco largo.

Asumo que, en realidad, son menos celdas las que podrían, o no, tener "algo" que deba impedir que se guarde el archivo pero sería bueno que lo comentes de modo más especifico como para poder ayudarte. Eso sí, te adelanto que lo que tendrías que usar es el evento "BeforeClose" del libro.

Comentas

Abraham Valencia

Ya veo, supongamos que solo son las 5 primeras celdas de la columna A noma, entonces en esas 5 celdas están el 21,22,23,14,24 al ver el 14 ya no se podrá guardar porque esta entre el 1 -20

[Hola

Debes usar el módulo del libro (por defecto lleva el nombre "ThisWorkbook") y su evento "BeforeSave". Coloca esto ahí:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Celda As Range
For Each Celda In Worksheets("Hoja2").Range("A1:A5")
    If Celda.Value >= 1 And Celda.Value <= 20 Then
        MsgBox "No podrás guardar el archivo"
        Cancel = True
        Exit Sub
    End If
Next Celda
End Sub

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas