"Arreglito" de macro 2

10/11/2007 - 22:01 por Miguel | Informe spam
Héctor Miguel:
Aquí tienes el enlace al archivo:
http://www.badongo.com/file/5086970
Un saludo,
M. Ángel

Preguntas similare

Leer las respuestas

#6 Miguel
13/11/2007 - 11:10 | Informe spam
On 13 nov, 03:55, "Héctor Miguel"
wrote:
hola, Miguel !

> d)... Entiendo que si asigno los nombres de rango a los combos, definiendo la propiedad RowSource
> en el momento de disenar el UserForm, no es necesario que incluya este codigo. Es asi, lo suprimo por completo?

(asumo que ya debiste hacer la prueba, pero) efectivamente, si los nombres los asignas en el tiempo de diseno
puedes prescindir de todo codigo que solo haga un des/re/llenado de los combos
(en tanto los nombres permanezcan correctamente establecidos, no deberas tener problemas) ;)

> e)... si asigno los nombres de rango a los combos, prescindo tambien de este codigo?

efectivamente, y tambien de su "llamada" en el evento '_initialize' del formulario (el des/re/ocultar hojas lo sigo dejando a tu criterio)

> f)... este codigo me tiene intrigado... y no he averiguado exactamente que es lo que hace.
> No entiendo el por que de las dos definiciones que das a los elementos que contienen los listados... "Títulos A"... "Títulos B": ...

fue solo por hacer (momentaneamente) "cortos" los nombres que se asignan a los rangos y devolverles su descripcion "total"

> Que quieres decir con modificaciones al vuelo?
> Que si en la hoja "Listas", modifico cualquiera de estos Titulos este codigo los vuelve a asignar.

por modificar al vuelo trate de referirme al caso en el que los elementos de alguna lista (A:F en "listas") aumente o disminuya -?-
con ese codigo puedes volver a establecer el "alcance" de cada listado (hasta cual fila llega cada uno)

> Por ejemplo, si cambio en la propia hoja "listas" "mot" por "Motivo", este codigo lo modifica y funciona igual?
> Y si ya he asignado los nombres de rango a los combos, por medio de la propiedad RowSource
> como afecta a este codigo, es necesario mantenerlo o se puede suprimir?

si piensas aprovechar asignar los nombres a la propiedad "RowSource" desde en tiempo de diseno...
(te sugiero) no hagas cambios a los nombres asignados/establecidos/... "originales" (a cada combo en diseno)
o... necesitaras volver a establecer cada nombre con su cada combo -?-

> ... en en el punto 4) de un post anterior tuyo
> me sugieres definir un nombre con referencia a rangos dinamicos para el origen de la tabla dinamica.
> Se definirlo con el asistente de tablas dinamicas, pero no con codigos VBA. Como seria?

no es necesario usar codigo para definir un nombre que haga referencia a rangos dinamicos (o de/crecientes)
1) selecciona la hoja "estadistica" y activa la celda A6 (se asume/entiende que el rango A1:A5 va a contnuar VACIO <= OJO)
2) ve a (menu) isertar / nombre / definir...
asigna un nombre (p.e. BaseTD)
usa la siguiente formula: =desref($a$6,,,contara($a:$a),22)
(ojo con el separador de argumentos, yo uso la coma y... excel se encargara de completar la formula con el nombre de la hoja)
3) despues ve a la hoja con la tabla dinamica, activa alguna celda dentro de la TD y usa al asistente:
"regresa" al paso 2 y en el cuadro de edicion de referencias (en lugar del rango que seleccionas de la hoja estadistica)...
-> introduces el signo '=' seguido por el nombre que hayas asignado (p.e. =basetd)
-> termina el asistente y haz un refresco de la TD ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.




Hola Héctor:

Paso a exponerte tres cuestiones:

Primera. El hecho de aprovechar la propiedad RowSource, desde el
diseno de los Combos, es porque si no lo hago, con los códigos que me
has propuesto, estos combos no funcionan, al desplegarlos están en
blanco, no contienen elementos. En las pruebas que he efectuado,
ignoro donde puede estar el error. No sé si tú lo has comprobado en el
archivo que colgué. Si es así, y a tí te funcionan, envíame el
archivo.

Segunda. El código que me recomiendas en el apartado f), ¿hay que mantenerlo aun habiendo definido los combos en la propiedad RowSource?; y, por último,

Tercera: No hay forma de que me acepte la fórmula recomendada. Sigo todos los pasos al pie de la letra:




Selecciono la hoja "Estadística", activo celda A6 (rango A1:A5
=>vacío)
Menú / insertar / nombre / definir ... asigno como nombre "BaseTD"
En el apartado: "Se refiere a:", introduzco la fórmula facilitada,
pero no la acepta y la he probado de varias formas...pero nada, no hay
manera. ¿Tú has probado a introducirla de esa manera? ¿Te la acepta?

Muy agradecido.
M. Ángel
Respuesta Responder a este mensaje
#7 Héctor Miguel
14/11/2007 - 01:02 | Informe spam
hola, Miguel !

__ 1 __
... El hecho de aprovechar la propiedad RowSource, desde el diseno de los Combos es porque si no lo hago
con los codigos que me has propuesto, estos combos no funcionan, al desplegarlos estan en blanco, no contienen elementos.
En las pruebas que he efectuado ignoro donde puede estar el error. No se si tu lo has comprobado en el archivo que colgue.
Si es asi, y a ti te funcionan, enviame el archivo.


__ 2 __
... El codigo que me recomiendas en el apartado f)
hay que mantenerlo aun habiendo definido los combos en la propiedad RowSource?


__ 3 __
... No hay forma de que me acepte la formula recomendada. Sigo todos los pasos al pie de la letra:
Selecciono la hoja "Estadística", activo celda A6 (rango A1:A5 =>vacío)
Menu / insertar / nombre / definir ... asigno como nombre "BaseTD"
En el apartado: "Se refiere a:", introduzco la formula facilitada, pero no la acepta y la he probado de varias formas...pero nada
no hay manera. Tu has probado a introducirla de esa manera? Te la acepta?



1) si los combos no tienen asignado su origen (desde tiempo de diseno) en la propiedad "RowSource"...
(para esto -obviamente- los nombres ya debieron haber sido establecidos con referencia cada uno a su rango/columna -"listas"-)
SI es necesario algun codigo donde se asigne el origen para el listado de cada combo (p.e. en el evento '_initialize')

a) corre/ejecuta la macro que asigna los nombres
(el Sub Nombre_a_listas() del inciso f del mensaje con la propuesta)

b) regresa al editor de vba y asigna a cada combo su "RowSource" segun su cada nombre
combo1: uni / combo2: mot / combos 3,5,7,9: nac / combos 4,6,8: doc / combos 10 a 14: efe

c) muestra el formulario (SIN codigos que los rellenen)

2) este procedimiento (Sub Nombre_a_listas()) te seria de utilidad cuando modifiques los elementos de la hoja "listas" (A:F)
por si de/crecen las filas de cada columna (podras volver a establecer hasta donde llega cada listaso/columna)

3) (probablemente) dentro de las varias formas que has intentado te falte revisar el "separador de argumentos" ?
"> usa la siguiente formula: =desref($a$6,,,contara($a:$a),22)"
"> (ojo con el separador de argumentos, yo uso la coma y... "

si despues de esto, necesitas el archivo (aun cuando mis modificaciones pudieran tener otros efectos)... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida