ST_
Miembro-
Contador de contenido
1159 -
Unido
-
Última visita
-
Días con premio
2
ST_ ganó el día el 13 de enero 2010
ST_ had the most liked content!
Sobre ST_
- Cumpleaños 11/18/1965
Visitantes recientes del perfil
El bloque de últimos visitantes está desactivado y no se puede mostrar a otros usuarios.
ST_'s Achievements
Novato (1/14)
20
Reputación de la comunidad
-
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
-
gracias por la dedicatoria y por la 'extravagancia del archivo'
-
a ver esta prueba !!!!!!! upssss,parece que me sumaré a lso "satisfechos" Ejemplo de menu.zip
-
okis...gracias lo probaré en cuanrto denga un poco de 'calma' y tiempo
-
Gracias Rolano,excelente idea para controlar los documentos de mi oficina
-
interesante aporte Antoni,creo quede aqui se pueden sacar otros 'experimentos'
-
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 !!!!!??????
-
ok por Acá puse un enlce,baja el archivo e intenta subirlo en este hilo (el link esta con el nombre de MenuBotonesST)
-
pues a los ignorantes como "yo" nos gustaría un vídeo sobre como hacer vídeos...explicativos como el tuyo !!!!
-
mi prueba con google chrome y eso que me resistí mucho para instalarlo definitivamente el navegador nada que ver !!! ni modo seguiré así...........
-
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]
-
a ver esta prueba........yo que me quejo del problema... no se puede el mismo error que notifica Abraham
-
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'
-
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