Saltar al contenido

Deseo mejorar mi presentacion de macros, con nuevos botones y mas armoniso y mejor presentación


Recommended Posts

Hola, antes que todo, muchas gracias, por hacer lo que hacen, que es enseñar, ayudar y solucionar los problemas de excel que como

yo un usuario comun puede mejorar a optimizar los procesos de nuestros trabajos, de corazon gracias.

Ahora quiero ser patudo, jajajaj, la verdad que gracias a ustedes he echo algunas cosillas que me sirven muchisimo, pero la presentación o la forma

como se muestra lo realizado no es muy grato, ademas es muy lento para abrir, quisiera mejorar la presentacion con algunos userfom y botones mas armonicos, ojala que cuando habra excel o mi archivo pareciera que estuviera dentro de un programa computacional.

Eso es todo ojala me ayuden y desde ya muchas gracias.

Enlace a comentario
Compartir con otras webs

Lamentablemente no puedo subir el archivo, pero si alguien tiene algun ejemplo de que la macro, sus useform, se vean como un programa computación de bonita presentación y ojala con identificación de usuarios y reportes, se lo agradeceria mucho.

Gracias a todos, por esta excelente pagina y sobre todo a los expertos que responden nuestros requerimiento e inquetudes.

Desde ya muchas gracias.

Mauricio.

Enlace a comentario
Compartir con otras webs

  • 6 months later...

Hola Ulises

No es por nada, pero.... ¿Te has dado cuenta de que el último mensaje de Mauricio1465 es del 16 de Marzo?

El tema está más que abandonado.

No obstante, y dado que tienes un archivo "a priori" interesante en cuanto a su presentación..... ¿por qué no lo subes en el foro de aportes?

En el apartado Utilización y Funcionamiento tienes opciones de cómo subir un archivo "pesado".

Un saludo desde Vitoria

Enlace a comentario
Compartir con otras webs

Reactivado, y cuanto al peso del archivo, yo tenia uno que no pesaba mas de 1 MB y con hacerle algunas cosas fue a pesar mas de 100 MB casi 160, demoraba una vida abriendo y luego guardando.

Use una macro para limpiar el libro; esta en un Modulo normal.

La baje desde aqui

'Reduce el peso del libro, limpiando TODO de las celdas que fueron usadas anteriormente y que ahora se encuentran vacias

Sub Limpiar_rangos() 'Crear un boton en la hoja para esta macro o F5 y Ejecutar

Dim hj As Excel.Worksheet

Dim copia$, ffin&, cfin&, TI&, TF&

copia = crear_copia(ActiveWorkbook)

MsgBox "Se ha creado una copia: " & vbLf & copia, vbInformation

With ActiveWorkbook

TI = VBA.FileLen(.FullName)

For Each hj In .Worksheets

ffin = 1

cfin = 1

With hj

On Error Resume Next

ffin = .UsedRange.Find(what:="*", LookIn:=xlFormulas, _

SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

cfin = .UsedRange.Find(what:="*", LookIn:=xlFormulas, _

SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

On Error GoTo 0

If .ProtectContents Then

If MsgBox("La hoja " & .Name & " se encuentra protegida." & vbLf & vbLf & _

"No se podrán limpiar los rangos de esta hoja a menos que se desproteja." _

& vbLf & vbLf & "¿Desea desprotegerla antes de continuar?", vbYesNo, _

"¡Hoja protegida!") = vbYes Then

If Desproteger(hj) Then

Limpiar hj, ffin, cfin

Else

MsgBox "No se ha desprotegido la hoja.", vbCritical, "¡Clave incorrecta!"

End If

End If

Else

Limpiar hj, ffin, cfin

End If

End With

Next hj

.Save

TF = VBA.FileLen(.FullName)

End With

MsgBox "Tamaño original: " & VBA.Format(TI, "#,##0") & " bytes." & vbLf & vbLf & _

"Tamaño final: " & VBA.Format(TF, "#,##0") & " bytes." & vbLf & vbLf & _

"El archivo se redujo en: " & VBA.Format(TI - TF, "#,##0") & " bytes" & _

" (" & VBA.FormatPercent(Abs(TI / TF - 1), 2) & ")."

End Sub

Private Function Desproteger(ByVal hj As Excel.Worksheet) As Boolean

On Error Resume Next

hj.Unprotect

Desproteger = Not VBA.CBool(Err.Number)

On Error GoTo 0

End Function

Private Sub Limpiar(ByVal hj As Excel.Worksheet, ByVal ffin As Long, ByVal cfin As Long)

With hj

With .Range(.Cells(ffin + 1, 1), .Cells(.Rows.Count, 1)).EntireRow

If .MergeCells = False Then .Clear

End With

With .Range(.Cells(1, cfin + 1), .Cells(1, .Columns.Count)).EntireColumn

If .MergeCells = False Then .Clear

End With

End With

End Sub

Private Function crear_copia(ByVal Libro As Excel.Workbook) As String

With Libro

.Save

crear_copia = .Path & Application.PathSeparator & VBA.Format(VBA.Now, "d-m-yy h-mm ") & .Name

.SaveCopyAs crear_copia

End With

End Function

Lo cierto es que funciona muy bien y te limpia los rangos (celdas) que tu usa y luego le eliminas su contenido dejandolas vacias pero excel las guarda como usadas.

¿Cual el inconveniente? es que si tienes Celdas vacias coloradas y entran en el rango para limpiar, el color se vuelve a normal pero datos no son eliminados, ademas antes de proceder, te crea una copia en un por si acaso tu mismo la *****.

El de 160MB me lo puso nuevamente en 1 MB.

Para optimisar el codigo, tambien Microsoft tiene una pequeña aplicacion para eso, muy efectiva tambien.

Excel tiene algo asi como un basurero que no ocupa tu casa pero lo tienes en la puerta, dicho basurero se limpia con esta macro (para TODAS las hojas) y con la aplicacion de Microsoft para el codigo, ESTA SE LLAMA CodeCleaner.exe; la instalas y esta se coloca en el editor VBA(excel) en Herramientas como Clean Project...

Enlace a comentario
Compartir con otras webs

jajaja guaho que loco tenia tanto trabajo aquí que vi ese 03 como 09 jajaja ya ando de hora de almuerzo jejeje gracias por la revisión... lo aportaría pero es el que manejo en la empresa y aunque yo lo diseñe no lo podría aportar y ya he hecho muchos cambios que han reducido su tamaño pero bueno de todas formas lo estaré pensando... Yo creía que sabia mucho de Excel bueno aquí en la compañía yo soy el que mas sabe de Excel pero a la final en este nuevo mundo y tantos aportes maravillosos que tiene AyudaExcel me ha demostrado que no se nada es mas aun ni he nacido por así decirlo...

Gracias por la corrección espero que nadie me multe por revivir este tema viejo

Saludos...

Enlace a comentario
Compartir con otras webs

Tengo algo parecido a lo que pides ya mi archivo pesa 900mb jejeje todos dicen que parece una pagina web y no un archivo de excel jejeje

Saludos

entonces sino puedes aportarlo porque la respúesta imaginate que todos los que aportamos a las dudas que surgen aqui de repente les digamos es que lo uso donde trabajo y no puedo aportarlo hace poco te ayude con 2 archivos ejemplos de simulacion ppt y te dire que fue algo diferente a lo que he programado le heche mucha imaginacion, te puedo jurar que al aportar aprendemos de los 2 lados amigo aunque sea aporta tu archivo con datos ficticios o simulando la web que dices y veras que como muchos dicen la imaginacion es el limite.

saludos

Enlace a comentario
Compartir con otras webs

Buenos días amigos, Buenos días Alucard2011.

Tienes razón amigo no creas que no compartiría mis archivos eso es lo de menos, ya por ahí copie un gran código que uso en esa base de datos, solo que tendría que quitarle mucho de la empresa imagínate son 900Mb y como 850mb son de la empresa, sin embargo subí varias de las tomas de mi sistema en uno de mis álbumes si quieren pueden revisarlo, es muy simple tiene macros sencillos en comparación a los que he visto en este foro como dije creí saber mucho pero no se nada jejeje...

De todas maneras estaré trabajando para subir uno mas simple del que yo tengo y a su ves proporcionar todos los macros, manuales y otros varios que he recopilado en el transcurso de mis 4 años de trabajo en Excel, ojo ninguno son de mi autoría son solo recursos de varias paginas y maestros que han compartido su ingenio para ayudarnos así como los muchos compañeros que están en esta pagina tan maravillosa y que en muchos dias me ayudaron a su ves los he multiplicado con mis amigos y compañeros de trabajo para que aprendan y no me pregunten tanto jajajaja mentira jajaja pero si son mujeres las apoyo mas rápido jajaja...

Saludos y que tengan excelente día.

Enlace a comentario
Compartir con otras webs

  • 1 month later...

Archivado

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

  • 96 ¿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

    • Hola buenas, Os presento mis dudas. Tengo un libro  (llamémosle LibroDestino) con dos módulos, uno de definición de variables "ModDef" y otro de inicializacion de esas mismas variables "ModCfg". Necesito que al copiarme una hoja de otro libro(llamémosle LibroOrigen), mediante un procedimiento, sobrescribir el modulo de inicialización de variables del LibroDestino con el  contenido del módulo que hay en el LibroOrigen. Destacar que los dos módulos de cada libro tienen el mismo nombre "ModCfg". Y tienen una única variable llamada "Mensaje". En el LibroDestino tiene el valor "Hola" y en el LibroOrigen el valor "Adiós" Este procedimiento lo realiza perfectamente,  es decir se sobrescribe, pero si en el mismo procedimiento quiero utilizar el nuevo valor de esa variable, me conserva el valor de la variable anterior. Para hacer las comprobaciones he ejecutado un MsgBox al empezar y al acabar el procedimiento, pero en los dos casos me devuelve el valor original del LibroDestino el valor "Hola", cuando mi idea es que al sobrescribir el modulo con el nuevo valor de la variable, el último MsgBox me devuelva el valor "Adios". Mi objetivo es poder tener la inicialización de esas variables en un libro que no sea el de trabajo (LibroDestino), ya que según la hoja que importe puedo requerir que las variables tengan un valor u otro. ¿Por que no me coge en el procedimiento el nuevo valor de la variable? ¿Cómo podría conseguirlo? He tenido que activar en VBA  la referencia Microsoft visual basic for applications extensibility 5.3 desde  Herramientas -> Referencias. Creo que es la única manera de poder trabajar con los módulos desde VBA, aunque si se pudiera de otra manera creo que sería mas óptimo. Mil gracias de antemano, un saludo!         Libro1_Prueba.xlsm Libro2_Prueba.xlsm
    • Agradecido Antoni! Tus sugerencias me ayudaron mucho! Como pudiese hacerte llegar el archivo?
    • Prueba este código. Sin el archivo no te puedo ajustar más. Private Sub btnCargaBancos_Click() 'El tipo de dato debe especificase para cada variable Dim TasaCompra As Double, TasaVenta As Double, InvBanesco As Double, InvVzla As Double Dim MontoBanesco As Double, MontoVzla As Double, TasaDiaBan As Double, TasaDiaVzla As Double Dim TasaActual As Double 'Hay que comprobar que los textbox tienen contenido numérico 'Los datos numéricos solo pueden contener números y el separador decimal, cualquier otro caracter dará error al convertir If Not IsNumeric(txtInverBanesco) Or _ Not IsNumeric(txtInverVzla) Or _ Not IsNumeric(txtTasaCompra) Or _ Not IsNumeric(txtTasaVenta) Then MsgBox "Los datos deben ser numéricos", vbCritical Exit Sub End If InvBanesco = CDbl(txtInverBanesco) InvVzla = CDbl(txtInverVzla) TasaCompra = CDbl(txtTasaCompra) TasaVenta = CDbl(txtTasaVenta) 'Los datos de los divisores no pueden ser 0 (Indeterminación matemática) If TasaCompra = 0 Or _ InvBanesco = 0 Or _ InvVzla = 0 Then MsgBox "Los datos no admiten valor cero", vbCritical Exit Sub End If MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055) TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then TasaActual = TasaDiaBan Else TasaActual = TasaDiaVzla End If 'En VBA, los datos numéricos no admiten ser formateados, formatear directamente en las celdas, 'MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) 'MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) 'TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco = MontoBanesco txtBcoVenezuela = MontoVzla txtTasaDiaria = TasaActual End Sub  
    • Hola a ambos, @MarianoCruz, si con la respuesta de @Israel Cassales ya tienes resuelto el problema, perfecto. Punto final y a otra cosa. Pero piensa que tu archivo lleva vínculos externos, así que se hace difícil (prácticamente imposible) comprobar si las propuestas dadas ofrecen el resultado esperado. A tal efecto, te sugiero que vuelvas a subir otro archivo, esta vez insertando nuevas hojas que contengan los datos existentes en esos archivos externos.  Tal vez así se vea claro qué es lo que buscas conseguir, y se puedan hacer pruebas que verifiquen la bondad de el/los resultado/s. Tampoco iría mal que insertaras a mano qué resultado debe aparecer en la celda C3 en cada uno de los 3 casos: cuando se inserte 'XI', 'XL' o unos u otros números en los lugares apropiados. Así iremos totalmente sobre seguro acerca del método a emplear. Saludos,
    • Hi Trate de ver que hacían las fórmulas en cuestión pero a su libro le falta o le faltan hojas, por lo que solo podría participar con un par de ideas en general. Lo que entiendo es que según el valor de B3 en C3 debe poner una fórmula u otra, así que es posible que si combina DIRECCION() con INDIRECTO() pueda intercambiar de una fórmula a otra. =SI(B3="Xl",INDIRECTO(DIRECCION(3,5)),SI(O(B3=1,B3=2,B3=3),INDIRECTO(DIRECCION(4,5)),"")) Otra forma sería poner nombre a esas fórmulas en el cuadro de nombres para que las pueda mandar llamar a una o a la otra según el resultado de B3. Por favor tome en cuenta, es solo una idea.
  • 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.