Impresión automática desde lista de validación

20/10/2008 - 09:56 por vitobacon | Informe spam
Hola.
Tengo una macro que escribí siguiendo instrucciones de Héctor Miguel para
imprimir unas "fichas" a partir del dato que seleccionaba en una lista de
validación (en la celda G1). El código aparece más abajo.
Bien, pues las cosas han ido creciendo, y ya tengo más de 600 entradas en mi
lista de validación, así que si ejecuto la macro se pone a imprimir, que es
lo que se espera de ella.
El problema que ahora tengo, y por el que hago esta consulta, es que NO las
quiero imprimir TODAS sino sólo unas cuantas que cumplan una condición
(pongamos por caso, que empiecen por "a", por "b" o por "c"; otro caso de
ejemplo sería desde la "c-080" hasta la "c-120").

A continuación pego la macro:

Sub ImprimirTodas()
Dim celda As Range
For Each celda In Range("ListaClaves")
DoEvents
Worksheets("FICHA").[G1] = celda
Worksheets("FICHA").PrintOut
Next
End Sub

El rango ListaClaves es de longitud variable, y se obtiene con la fórmula
ListaClavesÞSREF(dBASE!$A$2;0;0;CONTARA(dBASE!$A:$A)-1;1)
que también confeccioné mediante consultas al foro, siendo dBASE la hoja del
libro donde tengo todos los datos.
La lista está ordenada alfabéticamente.
Utilizo Excel 2007.

Pues nada, eso era.
Un saludo y quedo a la espera.
Álvaro

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/10/2008 - 22:10 | Informe spam
hola, alvaro !

- cuantas "variantes" (o casos como los ejemplos) consideras que llegaras a necesitar ?
- quieres que (todas ?) las variantes esten consideradas en una sola macro ?
- prefieres que el codigo "pregunte" (inputboxes o similares) cual variante y con que condiciones/parametros ?

comenta si hubiera algun detalle mas "en el tintero" :))

saludos,
hector.

__ OP __
Tengo una macro... para imprimir unas "fichas" a partir... en una lista de validacion (en la celda G1)...
El problema... es que NO las quiero imprimir TODAS sino solo unas cuantas que cumplan una condicion
(... que empiecen por "a", por "b" o por "c"; otro caso de ejemplo seria desde la "c-080" hasta la "c-120")...
El rango ListaClaves es de longitud variable, y se obtiene con la formula
ListaClavesÞSREF(dBASE!$A$2;0;0;CONTARA(dBASE!$A:$A)-1;1)
La lista esta ordenada alfabeticamente.
Utilizo Excel 2007.


__ el codigo expuesto __
Sub ImprimirTodas()
Dim celda As Range
For Each celda In Range("ListaClaves")
DoEvents
Worksheets("FICHA").[G1] = celda
Worksheets("FICHA").PrintOut
Next
End Sub
Respuesta Responder a este mensaje
#2 vitobacon
21/10/2008 - 08:39 | Informe spam
Hola Héctor.
La casuística es pequeña.
Supongo que se podría solucionar anotando los condicionantes en una(s)
celda(s) y que la macro lea de ahí.
No necesito inputbox, y creo que la variante podría ser una sola:
(desde-hasta), todas seguidas y sin saltos.
Sólo tengo tres rangos (a, b y c) y conozco de antemano los límites
(a-1/a-9), (b-01/b-65) y (c-001/c-516)
Eso es todo.
Un saludo
Álvaro

"Héctor Miguel" escribió en el mensaje
news:ODbzd$
hola, alvaro !

- cuantas "variantes" (o casos como los ejemplos) consideras que llegaras
a necesitar ?
- quieres que (todas ?) las variantes esten consideradas en una sola macro
?
- prefieres que el codigo "pregunte" (inputboxes o similares) cual
variante y con que condiciones/parametros ?

comenta si hubiera algun detalle mas "en el tintero" :))

saludos,
hector.

__ OP __
Tengo una macro... para imprimir unas "fichas" a partir... en una lista
de validacion (en la celda G1)...
El problema... es que NO las quiero imprimir TODAS sino solo unas cuantas
que cumplan una condicion
(... que empiecen por "a", por "b" o por "c"; otro caso de ejemplo seria
desde la "c-080" hasta la "c-120")...
El rango ListaClaves es de longitud variable, y se obtiene con la formula
ListaClavesÞSREF(dBASE!$A$2;0;0;CONTARA(dBASE!$A:$A)-1;1)
La lista esta ordenada alfabeticamente.
Utilizo Excel 2007.


__ el codigo expuesto __
Sub ImprimirTodas()
Dim celda As Range
For Each celda In Range("ListaClaves")
DoEvents
Worksheets("FICHA").[G1] = celda
Worksheets("FICHA").PrintOut
Next
End Sub




Respuesta Responder a este mensaje
#3 Héctor Miguel
21/10/2008 - 15:06 | Informe spam
hola, Álvaro !

La casuistica es pequena.
Supongo que se podria solucionar anotando los condicionantes en una(s) celda(s) y que la macro lea de ahi.
No necesito inputbox, y creo que la variante podria ser una sola: (desde-hasta), todas seguidas y sin saltos.
Solo tengo tres rangos (a, b y c) y conozco de antemano los limites (a-1/a-9), (b-01/b-65) y (c-001/c-516)...



el siguiente ejemplo asume que tienes disponibles las celdas [A2] y [B2] / [A3] y [B3]
- [A2] para indicar el intervalo "desde" que puede ser una unica letra (a,b,c) o un codigo inicial (a-2, b-06, c-120, etc.)
- [B2] para indicar el intervalo "hasta" que DEBERA ser un codigo final (nota: si "desde" es una letra, [B2] es omitido) <= OJO
- [B3] le asignas un nombre (Desde) y usas esta formula EN LA CELDA:
=coincidir(a2&"*",listaclaves,0)
- [B3] le asignas un nombre (Hasta) y usas esta formua EN LA CELDA:
=si(largo(a2)=1,contar.si(listaclaves,a2&"*")+desde-1,coincidir(b2,listaclaves))

lo anterior tiene dos propositos:
1) "aligerar" la carga de busquedas por codigo
2) determinar si hay errores ANTES de correr la macro ;)

la macro seria +/- como sigue:

Sub Imprime_Intervalo()
Dim n As Integer
For n = [Desde] To [Hasta]
Range("g1") = [ListaClaves].Cells(n)
Next
End Sub

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

__ previos __
- cuantas "variantes" (o casos como los ejemplos) consideras que llegaras a necesitar ?
- quieres que (todas ?) las variantes esten consideradas en una sola macro ?
- prefieres que el codigo "pregunte" (inputboxes o similares) cual variante y con que condiciones/parametros ?
__ OP __
Tengo una macro... para imprimir unas "fichas" a partir... en una lista de validacion (en la celda G1)...
El problema... es que NO las quiero imprimir TODAS sino solo unas cuantas que cumplan una condicion
(... que empiecen por "a", por "b" o por "c"; otro caso de ejemplo seria desde la "c-080" hasta la "c-120")...
El rango ListaClaves es de longitud variable, y se obtiene con la formula
ListaClavesÞSREF(dBASE!$A$2;0;0;CONTARA(dBASE!$A:$A)-1;1)
La lista esta ordenada alfabeticamente...
Respuesta Responder a este mensaje
#4 Héctor Miguel
21/10/2008 - 15:41 | Informe spam
hola (de nuevo), Álvaro !

ooops... olvide la instruccion para imprimir la hoja :-(

Sub Imprime_Intervalo()
Dim n As Integer
For n = [Desde] To [Hasta]
Range("g1") = [ListaClaves].Cells(n)
ActiveSheet.PrintOut
Next
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#5 vitobacon
21/10/2008 - 18:20 | Informe spam
Chulísimo, Héctor.
Funciona a la perfección, con tu elegancia habitual.
Muchas gracias como siempre, y hasta la próxima.
Álvaro

"Héctor Miguel" escribió en el mensaje
news:
hola (de nuevo), Álvaro !

ooops... olvide la instruccion para imprimir la hoja :-(

Sub Imprime_Intervalo()
Dim n As Integer
For n = [Desde] To [Hasta]
Range("g1") = [ListaClaves].Cells(n)
ActiveSheet.PrintOut
Next
End Sub

saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida