Saltar al contenido

Msgbox Recurrente


Recommended Posts

Muy buen día, tarde, noche estimados

Llevo ya rato de no molestar con mis dudas, ni poder aportar nada a la comunidad, y de antemano me disculpo por ello.

En esta ocasión quisiera solicitar de su amable ayuda, pues no logro resolver una secuencia en vba. Tengo el siguiente código:

Dim Nombre As String
Nombre = "Índice WP"

Dim Hoja As String
Hoja = ActiveSheet.Name

For i = 1 To Worksheets.Count
    If Worksheets(i).Name = Nombre Then
        txtCliente = Worksheets("Índice WP").Range("Cliente").Value
        txtAuditoria = Worksheets("Índice WP").Range("Auditoria").Value
        Exit Sub
    Else
        MsgBox "No se ha creado el índice de papeles de trabajo, se creará en estos momentos", vbInformation, Titulo
        Call Crear_Indice
        txtCliente = Worksheets("Índice WP").Range("Cliente").Value
        txtAuditoria = Worksheets("Índice WP").Range("Auditoria").Value
        Worksheets(Hoja).Select
    End If
Next

El cual está inmerso en el Initializise de un userform, y lo que me hace es que verifica si existe una hoja llamada "Índice WP", y si existe pues llama el form y rellena algunos campos, pero si la hoja no existe, entonces lo que hace es que la crea, pero antes de crearla envía un Msgbox indicando que se creará la hoja, y es aquí donde tengo el problema pues al momento de inicializar el form, el msgbox me salta "N" veces, como hojas tenga en mi Excel, y lo que necesito es que únicamente me muestre una vez el mensaje.

Me podrían ayudar con esto.

Desde ya muy agradecido por su valiosa colaboración.

muesetra.xlsm

Enlace a comentario
Compartir con otras webs

hola, a todos ! (solo por no "dejarlo en el tintero")

no necesitas buclear por todas las hojas de un libro para averiguar si alguna existe, prueba con una UDF +/- así:

Function HojaExiste(ByVal nombre As String) As Boolean
  On Error Resume Next
  HojaExiste = Worksheets(nombre).Type
End Function

después solo adapta la creación de la hoja (si fuera necesario p.ej.

  if HojaExiste("Índice WP") = false then Crear_Indice

saludos,

hector.

Enlace a comentario
Compartir con otras webs

Muchas gracias @Max2005 por tu colaboración, pero no era lo que necesitaba

Hace 3 horas, Max2005 dijo:

Hola @aaquino,

Espero haberte entendido,

Revisa el adjunto y nos compartes tu respuesta

Mucha Suerte !!!

Saludos 

muesetra_Max.zip

 

@Héctor Miguel me funcionó a las mil maravillas la UDF. No se me había ocurrido antes.

Hace 3 horas, Héctor Miguel dijo:

hola, a todos ! (solo por no "dejarlo en el tintero")

no necesitas buclear por todas las hojas de un libro para averiguar si alguna existe, prueba con una UDF +/- así:


Function HojaExiste(ByVal nombre As String) As Boolean
  On Error Resume Next
  HojaExiste = Worksheets(nombre).Type
End Function

después solo adapta la creación de la hoja (si fuera necesario p.ej.


  if HojaExiste("Índice WP") = false then Crear_Indice

saludos,

hector.

 

Muchas gracias a ambos por sus respuestas.

Tema solucionado.

Enlace a comentario
Compartir con otras webs

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 98 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • He descargado tu archivo y funciona correctamente, revisa el video adjunto:
    • Hola perdon no pegue todo mi codigo, no lo copie bien es este al principio: Sub MacroG() Application.ScreenUpdating = False       Mensaje = "No se pueden guardar los datos aún hay celdas vacías:" 'Recorremos las celdas For i = 1 To 6     If Sheets("INGRESO").Range("DATO" & i).Value = "" Then         Valor = Sheets("INGRESO").Range("DATO" & i).AddressLocal         Valor1 = Valor1 & VBA.vbNewLine & Valor     End If   Next i   If Not Valor1 = "" Then     MsgBox Mensaje & VBA.vbNewLine & Valor1, vbExclamation, "Ingreso de Productos" Else     End If   Donde cada celda le cambie el cuadro de nombre C4= DATO1 C5= DATO2 C6= DATO3 C7= DATO4 F4= DATO5 F5= DATO6 asi estoy seleccionando las celdas Comparto mi macro que esta en la nube https://files.fm/u/uzb68tetng  
    • No has especificado cuales son las celdas a validar si están vacías, te he puesto un ejemplo para el rango A1:A6, corrige a voluntad: Sub Borrar() '------- Corregir las celdas según necesidad If Range("A1") = "" Or _ Range("A2") = "" Or _ Range("A3") = "" Or _ Range("A4") = "" Or _ Range("A5") = "" Or _ Range("A6") = "" Then MsgBox "Hay celdas vacías", vbInformation Exit Sub End If '------- Range("C5").ClearContents Range("C7").ClearContents Range("C8").ClearContents Range("C23").ClearContents Range("C24").ClearContents Range("C39").ClearContents Range("C40").ClearContents Range("C55").ClearContents Range("C56").ClearContents Range("C71").ClearContents Range("C72").ClearContents Range("C87").ClearContents Range("C88").ClearContents Range("C103").ClearContents Range("C104").ClearContents Range("C119").ClearContents Range("C120").ClearContents Range("C135").ClearContents Range("C136").ClearContents Range("C151").ClearContents Range("C152").ClearContents End Sub  
    • Hola me podrian ayudar a corregir esta macro, ya que que he puesto la condicion que no se ejecute por si hay valores vacios en 6 celdas y siempre se ejecuta, comparto codigo:     Selection.ClearContents     Range("C5").Select     Selection.ClearContents     Selection.ClearContents     Range("C7").Select     Selection.ClearContents     Selection.ClearContents     Range("C8").Select     Selection.ClearContents     Range("C23").Select     Selection.ClearContents     Range("C24").Select     Selection.ClearContents     Range("C39").Select     Selection.ClearContents     Selection.ClearContents     Selection.ClearContents     Range("C40").Select     Selection.ClearContents     Range("C55").Select     Selection.ClearContents     Range("C56").Select     Selection.ClearContents     Range("C71").Select     Selection.ClearContents     Selection.ClearContents     Range("C72").Select     Selection.ClearContents     Range("C87").Select     Selection.ClearContents     Range("C88").Select     Selection.ClearContents     Range("C103").Select     Selection.ClearContents     Range("C104").Select     Selection.ClearContents     Range("C119").Select     Selection.ClearContents     Range("C120").Select     Selection.ClearContents     Range("C135").Select     Selection.ClearContents     Range("C136").Select     Selection.ClearContents     Range("C151").Select     Selection.ClearContents     Range("C152").Select     Selection.ClearContents     Range("A1").Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select     Selection.End(xlToLeft).Select     Selection.End(xlToLeft).Select     Selection.End(xlToLeft).Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select     Range("C4").Select         End Sub
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.