Jump to content

paikerr

Members
  • Content Count

    141
  • Joined

  • Last visited

  • Country

    Spain

About paikerr

  • Rank
    Advanced Member
  • Birthday May 22

Profile information

  • Gender
    Hombre
  • Localización:
    Segovia, Castilla y León

Converted

  • Campos
    ,
  • Mi versión de Excel:
    2,4,5,6,7

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @bigpetroman, muchísimas gracias por la correción. Efectivamente, se debe a ese error. Es decir, el rango de datos ya está creado bajo el nombre "Rango1" una vez que ejecutamos la macro por primera vez. Sin embargo, al ejecutar la misma macro varias veces, lo que hace es mostrar un error por pantalla porque está "pisando" de alguna manera el mismo rango con el mismo nombre. Mi pregunta a continuación es: Cómo podemos comprobar que el rango de datos "Rango1" ya está creado? (de esta manera, nos evitamos usar el tratamiento de errores "On Error Resume Next") Se me ocurre algo como esto: ... If Range("Rango1") = True then ActiveSheet.Protection.AllowEditRanges("Rango1").Delete Else With ActiveSheet .Protection.AllowEditRanges.Add Title:="Rango1", _ Range:=Range("A3:H" & fila), _ Password:=contraseña .Protect Password:=contraseña, _ DrawingObjects:=True, _ Contents:=True .EnableSelection = xlNoRestrictions End With end if
  2. Hola amigos del foro, Estoy ejecutando esta macro, y continuamente me muestra 'Error definido por la aplicación o el objeto': Sub ProtegerHoja() Dim fila As Long fila = Sheets("Hoja1").Range("A1048576").End(xlUp).Row Dim contraseña As String contraseña = "abcd" With ActiveSheet .Protection.AllowEditRanges.Add Title:="Rango1", _ Range:=Range("A3:H" & fila), _ Password:=contraseña .Protect Password:=contraseña, _ DrawingObjects:=True, _ Contents:=True .EnableSelection = xlNoRestrictions End With End Sub No sé dónde puede estar el error... Por más que lo reviso, no logro encontrarlo. De todos modos, he consultado la documentación que disponemos de Microsoft VBA en Internet, y en el código que dan como ejemplo también me muestra el mismo error. Sub UseAllowEditRanges() Dim wksOne As Worksheet Dim strPwd1 As String Set wksOne = Application.ActiveSheet strPwd1 = InputBox("Enter Password") ' Unprotect worksheet. wksOne.Unprotect ' Establish a range that can allow edits ' on the protected worksheet. wksOne.Protection.AllowEditRanges.Add _ Title:="Classified", _ Range:=Range("A1:A4"), _ Password:=strPwd1 ' Notify the user ' the title and address of the range. With wksOne.Protection.AllowEditRanges.Item(1) MsgBox "Title of range: " & .Title MsgBox "Address of range: " & .Range.Address End With End Sub Os agradezco enormemente cualquier tipo de ayuda u orientación...
  3. Solucionado: Gracias a los dos por el aporte.
  4. Hola a todxs, Necesito crear un evento de manera que al abrir el libro aplique un formato diferente a cada una de las hojas del libro. Es cierto que dentro de ThisWorkbook tenemos el evento Private Sub Workbook_Open(), pero no me sirve dado que tengo más de 10 hojas diferentes cada una de ellas con un formato diferente. Así que he pensado mejor en crear un evento dentro de cada hoja del libro. Algo así como Private Sub Worksheet_Activate(), pero sólo cuando se abra el libro (y no cuando se active la hoja). El caso es que dentro de las hojas, no logro encontrar ningún evento que se inicie sólo cuando se abre el libro... Se os ocurre alguna idea?? Algo así como un For Each... Next en Private Sub Workbook_Open() que me recorra todas las hojas del libro y vaya ejecutando las macros contenida en cada uno de los libros. No sé...
  5. Muchas gracias a los dos. He solucionado el problema con vuestros consejos. Un saludo.
  6. Hola amigos de la comunidad AyudaExcel, Tengo el siguiente problema: "Quiero que al abrir varios libros de Excel haya un evento que recorra todas las hojas de cada libro y las aplique un formato estándar para todas igual." Para ello he desarrollado la siguiente macro, pero me da problemas: Private Sub Workbook_Open() Application.ScreenUpdating = False Dim libro As Workbook Dim hoja As Worksheet For Each libro In Workbooks Set libro = ActiveWorkbook.Name For Each hoja In Worksheets Set hoja = ActiveWorksheet.Name With Sheets(hoja).Select With Cells ' Tamaño de las celdas... .ColumnWidth = 10 .RowHeight = 15 ' Alineación de las celdas... .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter ' Fuente de las celdas... .Font.Name = "Calibri" .Font.Size = 10 End With End With Next hoja Next libro MsgBox "La hoja de datos " & hoja.Name & " del libro " & libro.Name & " ha sido formateada correctamente." End Sub Al parecer las variables "libro" y "hoja" están declaradas como un objeto (obvio... porque de lo contrario, no funcionarían), pero al aplicar el método ActiveWorksheet.Name no me reconoce el tipo de dato porque pasa a ser de tipo String. No sé cómo solucionar este problema... Utilizo la versión de Excel 2019. Gracias.
  7. De todos modos, echaré un ojo a tu código...
  8. Hola de nuevo @Gerson Pineda, Revisando la documentación de Windows VBA, dice algo así como que después del método "Application.DisplayAlerts = False" debe ir acompañado de "Application.Quit" porque de lo contrario, si se mostraría la ventana de alerta. https://docs.microsoft.com/es-es/office/vba/api/excel.application.quit Sería algo así... Dim guardar as Byte guardar = MsgBox("¿Desea guardar los cambios antes de salir?", vbYesNo) if cerrar = vbNo Then With Application .DisplayAlerts = False .Quit end with else ActiveWorkbook.Saved Application.Quit end if Esto es para el evento "Private Sub Workbook_BeforeClose(Cancel As Boolean)"...
  9. No. No funcionaría. Ya lo probé y no funciona, porque si te das cuenta cerramos el libro que ejecuta la macro, y por tanto ésta deja de ejecutarse.
  10. Hola @Gerson Pineda, Gracias por tu respuesta. Esa opción me cierra el libro, pero no la aplicación. Me gustaría que cerrara la aplicación al completo. No sólo el libro. Es algún método de la clase application, pero no sé cuál...
  11. Hola compañeros, Cuál es el método que me permite quitar la ventana de alerta al cerrar un libro (ver imagen adjunta)? Estoy probando con este código, pero no me funciona... guardar = MsgBox(Prompt:="Gracias por usar la aplicación ofimática, " & tbNombre & "." & vbCr & _ "¿Desea guardar los cambios antes de salir?", _ Buttons:=vbYesNo + vbCritical, _ Title:=" SALIR DE LA APLICACION OFIMATICA") If guardar = vbYes Then ActiveWorkbook.Save Else Application.DisplayAlerts = False ' No mostramos la ventana de alerta para guardar manualmente los últimos ' cambios añadidos al libro de la aplicación ofimática... End If Gracias.
  12. Hola compañeros, Necesito que al pulsar sobre un botón y ejecutar una macro, se quede bloqueada toda la pantalla y no pueda acceder ni a la cinta de opciones ni al menú de acceso rápido, así como abrir las hojas del libro. He adjuntado una imagen, para ver si se puede apreciar mejor. Debe ser algún método de la clase application, pero no sé cuál... Sub BloquearLibro() application.(no sé qué método) = true End Sub Gracias.
  13. paikerr

    PALETA DE COLORES

    Version 1.0.0

    27 downloads

    Despliegue de la paleta de colores utilizados en Visual Basic. Si alguien quiere aportar más cosas, es totalmente libre de hacerlo... Gracias.
×
×
  • Create New...

Important Information

Privacy Policy