Excel - Menú desplegable con macro

   
Vista:

Menú desplegable con macro

Publicado por PATRICK (29 intervenciones) el 16/04/2012 09:18:07
Buenos días,

quisiera agregar un menú desplegable con varias tiendas que tengo (eso sé hacerlo) y que al seleccionar una active unas macros que muestren/oculten columnas.

La macro para mostrar / ocultar columnas sé programarla pero no sabría añadirla al menú desplegable.

En definitiva, lo que busco es que al seleccionar la TIENDA MADRID 1 en mi menú desplegable me oculte las columnas B y C. Si selecciono TIENDA MADRID 2 en el menú, se oculten las columnas B, C, D y E etc.

Gracias de antemano por contestarme.

Un saludo.

Patrick.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Gonzalo Quintana

Menú desplegable con macro

Publicado por Gonzalo Quintana guliquin03@yahoo.com.ar (70 intervenciones) el 17/04/2012 21:35:34
Patrick:
Podrías agregar el código que tienes, asi podremos brindarte la mejor solución...

Saludos,

Gonzalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Menú desplegable con macro

Publicado por PATRICK (29 intervenciones) el 19/04/2012 11:04:00
El menú desplegable está hecho desde Datos => Validación

las macros son de mostrar, ocultar columnas según quiero ver un punto de venta u otro. Actualmente están asociadas a botones pero preferiría un menú desplegable que no veintitantos botones.

Sub Botón_SEMP()

' OCULTA O MUESTRA LAS COLUMNAS DE SEMP

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Range("A1").Activate


End Sub

Sub Botón_TLMP()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE TLMP

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:Q").EntireColumn.Hidden = True
Range("A1").Activate

End Sub
Sub Botón_STBP()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STBP

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:AA").EntireColumn.Hidden = True
Range("A1").Activate

End Sub
Sub Botón_CYBER()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE CIBER

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:AK").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_TLAS()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE TLAS

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:AU").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_SEML()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE SEML

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:BE").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_TLML()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE TLML

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:BO").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_IDGG()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE IDGG

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:BY").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_VIRC()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE VIRC

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:CI").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STZB()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZB

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:CS").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STZZ()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZZ

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:DC").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STZV()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZV

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:DM").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STZV2()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZV2

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:DW").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STAO2()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAO2

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:EG").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STAG()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAG

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:EQ").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STAA()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAA

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:FA").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STAP()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAP

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:FK").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STSB()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSB

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:FU").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STSO()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSO

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:GE").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STSO2()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSO2

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:GO").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STSO4()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSO4

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:GY").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STGV2()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STGV2

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:HI").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STGR()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STGR

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:HS").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_STNC2()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STNC2

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:ic").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Sub Botón_PYMES()

' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STNC2

Columns("H:IM").Select
Selection.EntireColumn.Hidden = False
Columns("H:IM").EntireColumn.Hidden = True
Range("A1").Activate
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gonzalo Quintana

Menú desplegable con macro

Publicado por Gonzalo Quintana guliquin03@yahoo.com.ar (70 intervenciones) el 19/04/2012 18:28:36
Patrick:
Esto que te paso genera un menu como el "Archivo" - "Edición" de Excel y lo agrega después del ?.
Me tomé la libertad de cambiar los nombres de tus macros sacándole "Botón_" y te agregué la macro "MostrarTodo".

Cuando termines de agregar el código, cerrá el archivo y volvelo a abrir para que funcione correctamente. Esto hará que el Menú se generé cuando se abra el archivo y se elimine cuando se cierre evitando que te quede para los demás excel.

Espero que sea lo que estés buscando:

En ThisWorkbook agregá lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
Private Sub Workbook_Open()
 
    Call CreateMenu
 
End Sub
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
    Call DeleteMenu
 
End Sub


Y en un modulo aparte, lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
Option Explicit
 
'============================================================================
'                            Declaraciones Personales
'============================================================================
 
Public MenuObject As CommandBarPopup
 
Public MenuItem As CommandBarButton
 
Public i As Byte, MenuLevel As Byte
 
Public Lugar As String, Inicio As String, Fin As String
 
Public ArMacros As Variant
 
Sub CreateMenu()
 
    'Aca van los nombres de las macros que quieras que estén en el Menú
    ArMacros = Array(, "&CYBER", "&IDGG", "&PYMES", "&SEML", "&SEMP", "&STAA", _
        "&STAG", "&STAO2", "&STAP", "&STBP", "&STGR", "&STGV2", "&STNC2", _
        "&STSB", "&STSO", "&STSO2", "&STSO4", "&STZB", "&STZV", _
        "&STZV2", "&STZZ", "&TLAS", "&TLML", "&TLMP", "&VIRC", "&MostrarTodo")
    'El símobolo "&" remarca la letra en el Menú
    'Si agregas/eliminas items dentro del array, recuerda modificar el límite de i
 
    '   Nos aseguramos de que el Menu no se duplique y lo borramos antes de crearlo
    Call DeleteMenu
 
    For MenuLevel = 1 To 2
 
        Select Case MenuLevel
 
            Case 1 'Menu
                'Empezamos a crear Menu desplegable tipo los de Excel
                Set MenuObject = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, _
                    Temporary:=True) 'Se agrega siempre después del ?
 
                MenuObject.Caption = "&Prueba Menu" 'Reemplazar "Prueba Menu" por nombre _
                    que quieras. Dejar el símbolo "&" delante
 
            Case 2 ' Menu Item
                'Agreamos tus Opciones para Macros
                For i = 1 To 26
 
                    Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
                    MenuItem.Caption = ArMacros(i)
 
                    'Fórmulas para eliminar el "&" del mnombre de la macro y se pueda _
                        ejecutar desde el Menú
 
                    Lugar = InStr(1, ArMacros(i), "&", vbTextCompare)
                    Inicio = Mid(ArMacros(i), 1, Lugar - 1)
                    Fin = Mid(ArMacros(i), Lugar + 1, 99)
                    MenuItem.OnAction = Inicio & Fin 'Queda el nombre de la macro limpio
 
                Next i
 
        End Select
 
    Next MenuLevel
 
End Sub
 
Sub DeleteMenu()
 
    On Error Resume Next
    'Reemplazar "Prueba Menu" por el nombre que pusiste más arriba
    Application.CommandBars(1).Controls("Prueba Menu").Delete 'Borra el Menu
 
End Sub
 
Sub SEMP()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE SEMP
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Range("A1").Activate
 
End Sub
 
Sub TLMP()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE TLMP
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:Q").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STBP()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STBP
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:AA").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
Sub CYBER()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE CIBER
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:AK").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub TLAS()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE TLAS
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:AU").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub SEML()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE SEML
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:BE").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub TLML()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE TLML
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:BO").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub IDGG()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE IDGG
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:BY").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub VIRC()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE VIRC
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:CI").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STZB()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZB
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:CS").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STZZ()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZZ
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:DC").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STZV()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZV
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:DM").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STZV2()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STZV2
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:DW").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STAO2()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAO2
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:EG").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STAG()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAG
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:EQ").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STAA()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAA
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:FA").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STAP()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STAP
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:FK").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STSB()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSB
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:FU").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STSO()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSO
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:GE").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STSO2()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSO2
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:GO").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STSO4()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STSO4
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:GY").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STGV2()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STGV2
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:HI").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STGR()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STGR
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:HS").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub STNC2()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STNC2
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:IC").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub PYMES()
 
    ' OCULTA O MUESTRA LAS COLUMNAS DE LAS TIENDAS DE STNC2
    Columns("H:IM").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:IM").EntireColumn.Hidden = True
    Range("A1").Activate
 
End Sub
 
Sub MostrarTodo()
 
    ' Muestra todas las columnas
    Columns("H:IV").Select
    Selection.EntireColumn.Hidden = False
    Range("A1").Activate
 
End Sub


Favor, comentá...

Saludos,

Gonzalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar