UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1RESUELTO ayuda agregar mas celdas obligadas el 09/09/15, 12:13 pm

jruiz.soporte


buenas 
tengo una duda hice esta macro muy censilla para bloquear el cierre del archivo sin antes llenar las celdas 

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("AltaCodigo").Range("D18").Value = "" Then
        Cancel = True
        MsgBox "Este dato es muy importante"
    Else
        ActiveWorkbook.Close savechanges:=True
    End If


el problemas es que no se como indicarle a la macro que bloquee mas celdas y no solo la D18

adolfo castro


If Sheets("AltaCodigo").Range("D18").Value = ""  AND Range("D22").Value = ""  Then

jruiz.soporte


muchas gracias pero no funciona tal como yo pensé ya que lo que quiero es que no me deje cerrar el archivo asta que no esten llenas las celdas y si lo pongo como me dices con solo tener una celda con datos me deja cerrar 
tienes un idea de como seria la macro

Igtelo


Hola j.ruiz / Adolfo.

Aquí te va otra por si tus datos son consecutivos:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim w As Integer
w = Application.CountA(Sheets("altacodigo").Range("D18:D40")) 'P/rango D18:D40, modifica según necesites
If w = 0 Then  'Si contara es igual a cero
        Cancel = True
        MsgBox "Este dato es muy importante"
    Else
        ActiveWorkbook.Close savechanges:=True
    End If
End sub

Saludos
Ignacio Téllez

adolfo castro


Perdona pero a la carrera n o sale bien nada, no lo he probado, como bien dice Ignacio la suya esta mucho mas currada , no obstante prueba
If Sheets("AltaCodigo").Range("D18").Value = ""  or Range("D22").Value = ""  Then

Igtelo


Jejeje. Adolfo:

Creo que tampoco le va a funcionar...Sólo trabaja si todo es cero.

J.Ruiz modifica la variable w según cantidad de celdas que deben estar llenas, utiliza" Mayor que (>) o menor que (<) o el mismo igual (=); es solo cuestión de que la adaptes.

Saludos
Ignacio Téllez

adolfo castro


Hola buenas tardes de nuevo, sigo cabezon. hoy stoyyyyy
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("A1") = "" Or Range("B1") = "" Or Range("C1") = "" Then
MsgBox ("Una de las celdas A1, B1 y C1 está(n) vacia(s), favor revise y rellene" & vbCrLf & vbCrLf & "Antes no podrá cerrar el libro"), , "vbInformation" + "ERROR DE CIERRE"
Cancel = True
End If
End Sub

a ver si esa sirve, puedes agregar modificar o eliminar las que no quieras

Igtelo


Que buen cotorreo nos traemos con esto, jeje. Da gusto pero hay que seguir con las actividades, nos vemos.

Que tengan buen día o lo que resta de el.

Saludos...

adolfo castro


bueno creo que j.ruiz.soporte nos dara la solución, asi que quedo a espera de ella.
saludos a todos, seguimos con el curro.

jruiz.soporte


me sirvió esto que pueso el buen amigo adolfo

If Sheets("AltaCodigo").Range("D18").Value = ""  or Range("D22").Value = ""  Then

estoy agregando las celdas termiando pruebo y le confirmo si sirve

jruiz.soporte


ya logre hacer que me pida llenar los campos antes de cerrar el archivo pero abusando de su sabiduría como puedo hacer para que no los deje enviar por correo el archivo o mejor dicho prácticamente que lo tengan que cerrar para validar que llenaron la información y después adjuntarlo en un correo  


espero me puedan ayudar  confused confused confused

adolfo castro


No hay problema en ayudarte, pero para ello sube un adjunto simil a lo que necesitas, si no, adivinos, como que no puede ser.

quedo a la espera del archivo.

saludos Adolfo castro

jruiz.soporte


el problema es que no tengo ninguna archivo asi como lo quiero ya estuve buscando como hacerlos y tengo esto 

Private Sub Workbook_Open()

End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("AltaCodigo").Range("D18").Value = "" Or Range("D17").Value = "" Or Range("D19").Value = "" Or Range("D20").Value = "" Or Range("D21").Value = "" Or Range("G17").Value = "" Or Range("G18").Value = "" Or Range("G19").Value = "" Or Range("G20").Value = "" Or Range("G21").Value = "" Then
        Cancel = True
        MsgBox "Llena toda la informacion"
    Else
        ActiveWorkbook.Close savechanges:=True
    End If

End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "No  permitido imprimir  Tiene que ser enviado por correo despues de llenar toda la informacion .", vbOKOnly, "Operación prohibida."

End Sub


Private Sub Workbook_WindowActivate(ByVal Wn As Window)

End Sub



con esto logre que no deje imprimir no deje cerrar sin llenar los campos solo me falta que no los deje enviar por correo desde el mismo archivo

adolfo castro


Al no adjuntar el archivo, no puedo mas que imaginar que para mandar el e-mail, tienes una macro, la cual es enviada en alguno de los eventos, lo único que tienes que hacer es anular ese evento en caso de....

es decir

if ......... esta todo bien,then


mando e-mail
else
no mando e-mail.

end if

if .... no esta bien exit sub, anulo todos los eventos,

pero para ello has de localizar el evento que te manda el email.


asi por lo alto, mas no puedo hacer.......
saludos Adolfo castro


pd, hace ya tiempo que no tenia un debate de estas características

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.