Saltar al contenido

ST_

Miembro
  • Contador de contenido

    1159
  • Unido

  • Última visita

  • Días con premio

    2

Todo se publica por ST_

  1. Re: Cual fue tu primer post en AyudaExcel? a mi tambien me dio por 'recordar',ahora que ando nostalgico Solucionado - Insertar video en una hoja de Excel y que decir de mi 2º aporte que compartí con el amigo Ioyama: Solucionado - Convertir un string a long
  2. gracias por la dedicatoria y por la 'extravagancia del archivo'
  3. a ver esta prueba !!!!!!! upssss,parece que me sumaré a lso "satisfechos" Ejemplo de menu.zip
  4. okis...gracias lo probaré en cuanrto denga un poco de 'calma' y tiempo
  5. Gracias Rolano,excelente idea para controlar los documentos de mi oficina
  6. interesante aporte Antoni,creo quede aqui se pueden sacar otros 'experimentos'
  7. ok tomo nota que si funciona el link y los archivos no son el problema te refieres a "Restaurar valores predeterminados" ya que restablecer mis ojitos no la localizaron !!!!!??????
  8. ok por Acá puse un enlce,baja el archivo e intenta subirlo en este hilo (el link esta con el nombre de MenuBotonesST)
  9. pues a los ignorantes como "yo" nos gustaría un vídeo sobre como hacer vídeos...explicativos como el tuyo !!!!
  10. mi prueba con google chrome y eso que me resistí mucho para instalarlo definitivamente el navegador nada que ver !!! ni modo seguiré así...........
  11. Gracias Antoni en realidad ya tenia la macro que es muy parecido a tu código,solo que al tener una funcion que me regresa el nombre del ultimo form,puedes encontrar la macro con el nombre "EliminaFormularios" de paso copio/pego todo(a falta de poder subir el archivo) los cambios/adiciones ultimas estan marcadas con azul 'APIS BOTONES DE MAXIMIZAR Y MINIMIZAR Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Public Const WS_MINIMIZEBOX As Long = &H20000 Public Const WS_MAXIMIZEBOX As Long = &H10000 Public Const GWL_STYLE As Long = (-16) '------------------------------------------------- Private Sub UserForm_Initialize() Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long '------------------------------------------------- lngMyHandle = FindWindow("THUNDERDFRAME", "Menú general") lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE) lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX 'Or WS_MAXIMIZEBOX SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle End Sub [COLOR="blue"][B]Private Sub UserForm_Terminate() Application.Run ("Inviertesubrutinas") End Sub[/B][/COLOR] '-------------------------------------------------------------------- ' Esta macro, crea un formulario con un botón con el nombre cada hoja ' .Al ejecutar el formulario, se activa la hoja con el nombre del botón ' .Al formulario, se le han añadido las Apis para poder minimizarlo '-------------------------------------------------------------------- ' Sub CrearFormularioMenú() Dim Formulario As Object Dim Boton As MSForms.CommandButton '---------------------------------------------------------------------- Set Formulario = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) With Formulario .Properties("ShowModal") = False .[COLOR="blue"][B]Properties("Caption") = Ultimoform [/B][/COLOR]'"Menú general" .Properties("Width") = 128 .Properties("Height") = Sheets.Count * 25 + 28 '.Properties("Name") = "MiMenuBotones" End With '-------------------------------------------------------------------------- Set Desde = ActiveWorkbook.VBProject.VBComponents("Módulo1").CodeModule With ActiveWorkbook.VBProject.VBComponents(Formulario.Name).CodeModule .InsertLines .CountOfLines + 1, Desde.Lines([COLOR="blue"][B]11, 11)[/B][/COLOR] 'de la linea 11 copia 11 lineas End With '-------------------------------------------------------------------------- x = ActiveWorkbook.VBProject.VBComponents(Formulario.Name).CodeModule.CountOfLines + 1 For m = 1 To Sheets.Count Set Boton = Formulario.Designer.Controls.Add("forms.CommandButton.1") With Formulario '--------------------------------------------------------------------------------- .Designer.Controls(Formulario.Designer.Controls.Count - 1).Name = "Boton" & m .Designer.Controls(Formulario.Designer.Controls.Count - 1).Caption = Sheets(m).Name .Designer.Controls(Formulario.Designer.Controls.Count - 1).Width = 120 .Designer.Controls(Formulario.Designer.Controls.Count - 1).Height = 25 .Designer.Controls(Formulario.Designer.Controls.Count - 1).Top = 2 + 25 * (m - 1) .Designer.Controls(Formulario.Designer.Controls.Count - 1).Left = 2 '---------------------------------------------------------------------------------- .CodeModule.InsertLines x, "Private Sub Boton" & m & "_Click()": x = x + 1 .CodeModule.InsertLines x, "Sheets(""" & Sheets(m).Name & """).Activate": x = x + 1 .CodeModule.InsertLines x, "End Sub ": x = x + 1 '---------------------------------------------------------------------------------- End With Next m Modificasubrutinas MsgBox "el formualrio ha sido creado" SendKeys "%{F8}" End Sub Private Sub AbreFormulario() 'MiMenuBotones.Show [COLOR="blue"][B]VBA.UserForms.Add(Ultimoform).Show[/B][/COLOR] End Sub Private Sub Modificasubrutinas() Set localiza = ActiveWorkbook.VBProject.VBComponents("Módulo1").CodeModule n1 = localiza.ProcBodyLine("CrearFormularioMenú", vbext_pk_Proc) n2 = localiza.ProcBodyLine("AbreFormulario", vbext_pk_Proc) localiza.ReplaceLine n1, "Private Sub CrearFormularioMenú" localiza.ReplaceLine n2, "Sub AbreFormulario" End Sub [COLOR="blue"][B]Private Sub Inviertesubrutinas() Set localiza = ActiveWorkbook.VBProject.VBComponents("Módulo1").CodeModule n1 = localiza.ProcBodyLine("CrearFormularioMenú", vbext_pk_Proc) n2 = localiza.ProcBodyLine("AbreFormulario", vbext_pk_Proc) localiza.ReplaceLine n1, "Sub CrearFormularioMenú" localiza.ReplaceLine n2, "Private Sub AbreFormulario" End Sub[/B][/COLOR] [COLOR="blue"][B]Function Ultimoform() Set forms = ActiveWorkbook.VBProject.VBComponents For i = 1 To forms.Count If forms(i).Type = vbext_ct_MSForm Then f = forms(i).Name End If Next i Ultimoform = f End Function Private Sub EliminaFormularios() Set Formularioa = ActiveWorkbook.VBProject.VBComponents ultimo = Val(Right(Ultimoform, 1)) For i = ultimo To 2 Step -1 Formularioa.Remove Formularioa(Ultimoform) Next i End Sub[/B][/COLOR][/CODE] [color=red][b]nota:el requisito previo es que exista por lo menos un formulario ya creado para que corra adecuadamente[/b][/color] Bajar ejemplo desde este enlace: [b]MenuBotonesST[/b]
  12. a ver esta prueba........yo que me quejo del problema... no se puede el mismo error que notifica Abraham
  13. en realidad es muy facil de solucionar si usamos la propiedad name del formulario,tal que..al tener un nombre presonalizado,este no generará ningun problema aunque haya mas forms en el VBEditor Sub CrearFormularioMenú() Dim Formulario As Object Dim Boton As MSForms.CommandButton '---------------------------------------------------------------------- Set Formulario = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) With Formulario '..........................códig anterior ya comentado [COLOR="red"][B][B].Properties("Name") = "MiMenuBotones" 'agregado[/B][/B][/COLOR] End With[/CODE] por supuesto habrá que cambiar la rutina que abre el form por su nombre personalizado: [CODE]Private Sub AbreFormulario() [COLOR="red"][B]MiMenuBotones[/B][/COLOR].Show End Sub[/CODE] caray !!!...creo que si proponermelo sigo realizando cambios en la propuesta inicial. ps de que,para esos estamos para compartir por cierto muy utiles para localizar una macro y cambiar su 'contenido'
  14. considere algunos otros cambios 'menores' Sub CrearFormularioMenú '............ Next m [COLOR="red"][B]Modificasubrutinas MsgBox "el formulario se ha creado" 'muestra el mensje SendKeys "%{F8}"[/B][/COLOR]'muestra el cuadro de dialogo para ejecutar la macro End Sub[/CODE] y para que solo se vea al incio la macro que crea al form [CODE][COLOR="red"][B]Private[/B][/COLOR] Sub AbreFormulario() UserForm1.Show End Sub[/CODE] ademas de la altura de los botones en la macro 'CrearFormularioMenú' [CODE]With Formulario ............................ .Properties("Height") = Sheets.Count * 25 + 28 End With ............. .Designer.Controls(Formulario.Designer.Controls.Count - 1).Height = 25 .Designer.Controls(Formulario.Designer.Controls.Count - 1).Top = 2 + 25 * (m - 1)[/CODE] bueno ahi le dejo por que se me pueden ocurrir mas cosas
  15. hola niño del video: checa las modificaiones que propuse en el comentario anterior al tuyo,esta basado en la propuesta de Antoni con las sugerencias que ya exprese,espero que con ello no tengas problemas. recuerda que cuando este abierto el libro debes pulsar Alt+F8 para ver y ejecutar la macro que se muestra en el cuadro de dialogo. pd-parace que hay problemas para subri archivos !!!
  16. salu2 Saile como van los aportes con Gali
  17. me gusto mas con botones a Height = 25 ademas agregaria 2 subrutinas mas al final (Bueno es una sugerencia,por lo menos a mi me gusta mas así) Sub AbreFormulario() UserForm1.Show End Sub Private Sub Modificasubrutinas() Set localiza = ActiveWorkbook.VBProject.VBComponents("Módulo1").CodeModule n1 = localiza.ProcBodyLine("CrearFormularioMenú", vbext_pk_Proc) n2 = localiza.ProcBodyLine("AbreFormulario", vbext_pk_Proc) localiza.ReplaceLine n1, "Private Sub CrearFormularioMenú" localiza.ReplaceLine n2, "Sub AbreFormulario" End Sub[/CODE] y en la macro que crea el formulario, al final de la misma agregaria una linea para ejecutar "Modificasubrutinas",para que de esta manera: [CODE]Sub CrearFormularioMenú '............ Next m [COLOR="red"][B]Modificasubrutinas[/B][/COLOR] End Sub[/CODE] 1-solo se vea al principio la macro que crea el formulario al teclear Alt+F8 para ver las macros disponibles 2.-una vez creado el form,se pueda ocultar dicha macro y se encuentre/muestre visible la macro (AbreFormulario) que permita ver el formulario creado en tiempo de ejecucion. por demas decirles que el form sule ser practico si nos deplazamos con las flechas de navegacion por los botones (claro ajsutados a una altura de 25 com ya lo comente al inicio) salu2 pd.-por cierto sidV .-intente unirme al grupo sin exito ,dice que no tengo permisos suficientes !!!
  18. je,je,je,..genial el del posavasos(portavasos para mex.)
  19. creo que eso significa que somo iguales de 'cuaternarios' con 4pro conoci mi primer hoja de calculo en el trabajo y no me imagine estar usando macros ahora para automatizar mis tareas aunque me meti a este tema de las macros hace como 4 o 5 años,mientras venia re-trabajando y usando mucho tiempo en las tareas encomendadas en mi trabajo...ahora eso es cosa del pasado,en fin cosas de la vida
  20. vaya,entonces me tendré que sentir 'juntamente' con Mauricio halgado,si reconsidero el haberme pefilado por las ciencias sociales,en especial por el "derecho" ...aunque una carrera de tècnico me este dando de comer y el litigio lo tenga abandonado..... lo cual sin duda indica que "es posible" que algunos tengamos 'chispazos' de vez en cuando en este asunto de la programación con VBA
  21. ok entendido y anotado...........y resuleto
  22. hola paisano....mas vale tarde que nunca, 1000 felicidades y espero que el frio no este tan fuerte por allá
  23. muy buen enlace....en cuanto a la tecnica....mmmm....seguro que la recuerdas Mauricio,por ejemplo se emplea para convertir/exportar una imagen o rango de la hoja de calculo a un archivo jpg,png,etc.,en donde el objeto grafico hace las veces de "contenedor" en este caso es una pequeña variante(no por ello deja de ser interesante) lo interesante de los objetos que podemoa usar como contenedores es que dan rienda suleta a nuestra imaginacion/capacidad/conocimientos para realizar nuevos trucos,por ejemplo en un antiguo foro llamado exceluciones alguien pregunto como se podia crear un 'visualizaor de archivos' y si bien creo que en lo personal nunca le respondí,si encontre la solucion usando el contro webbrowser como contenedor de aplicaiones como word,power point ,el propio excel desde luego y hasta access (aunque con este ultimo fallaba en algunas cosas que ya no recuerdo). pero era una buena herramienta para 'ver' este tipo de archivos desde un form,sin necesidad de abrir directamente los archivos(en modo normal ,me refiero) ya que desde excel y en un form podia yo abir y mostrar en el web browser el archivo 'elegido' sin duda los contenedores no 'facilitan' la vida sabiendoles sacar 'jugo'
  24. Respuesta: resumen diciembre descartando las funciones(por que me salen ronchas,je,je,je) Macros y programación VBA: 165 temas 21 temas sin respuesta Excel General 113 temas 11 temas sin respuesta a mi me parece que las cifras todavia podrian haber sido inferiores,desafortunadamente no existe una forma "amigable" de encotrar los temas 'no resueltos' y estos se pierden en la multitud si no es por el archivo que gentilmente sube pojke ,no sabriamos de ellos,salvo los mas recientes con ello valdrtia la pena que los moderadores le hicieran llegar una sugerencia a proper para que considere la exitencia de una opcion mas en el diseño de la pagina y me refiero por supuesto a los temas "No Resueltos",vale decir que en otros foros si exite esta 'facilidad'
×
×
  • 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.