Marcar Hojas como activas desde un macro

24/09/2007 - 22:58 por colmenaf | Informe spam
Hola a todos.
Tengo una macro que lee unas hojas de pedidos, y quiero desde la macro
ir colocando como activa aquellas hojas de pedidos con datos. De
manera que cuando el macro termine de ejecutarse deje marcada las
hojas que realmente tienen datos como activas, para posteriormente
enviarlas a imprimir.
Gracias por la ayuda.
Saludos.

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
27/09/2007 - 02:43 | Informe spam
hola, Flor ! [disculpas... el anterior *se me chispotio*] :))

antes de *meterle mano* a la fraccion de codigo que expones...
y DESPUES de que se han llevado a cabo todas las instrucciones en esa fraccion de codigo...

1) que uso posterior les das a las variables: FamHoj1, FamHoj2, FamHoj3 y FamHoj4 -?-

2) es *constante* buscar en el rango de filas 1 a 169 ? [segun la variable: F_Max]

3) es *fija* la columna donde *cuentas* cantidades mayores a 0 [cero] en cada una de las hojas -?-
hoja(1)=col_19, hoja(2)=col_14, hoja(3)=col_18, hoja(4)=co_14

4) es correcto *asumir/suponer/...* que las hojas las buscas *por indice* ?
no importa su nombre en las etiquetas ni si las cambian de posicion ???

[si hubiera algun detalle en el tintero... es hora de comentarlo] :))

saludos,
hector.
Respuesta Responder a este mensaje
#7 colmenaf
01/10/2007 - 18:26 | Informe spam
On 26 sep, 20:43, "Héctor Miguel"
wrote:
hola, Flor ! [disculpas... el anterior *se me chispotio*] :))

antes de *meterle mano* a la fraccion de codigo que expones...
y DESPUES de que se han llevado a cabo todas las instrucciones en esa fraccion de codigo...

1) que uso posterior les das a las variables: FamHoj1, FamHoj2, FamHoj3 y FamHoj4 -?-

2) es *constante* buscar en el rango de filas 1 a 169 ? [segun la variable: F_Max]

3) es *fija* la columna donde *cuentas* cantidades mayores a 0 [cero] en cada una de lashojas -?-
hoja(1)=col_19, hoja(2)=col_14, hoja(3)=col_18, hoja(4)=co_14

4) es correcto *asumir/suponer/...* que lashojaslas buscas *por indice* ?
no importa su nombre en las etiquetas ni si las cambian de posicion ???

[si hubiera algun detalle en el tintero... es hora de comentarlo] :))

saludos,
hector.



Hola Héctor, [no hacen faltas las disculpas :)]

1.- Le muestro un mensaje al usuario sobre la cantidad de familias que
tiene por hoja.
2.- Sí es una constante, para nada varía.
3.- Sí son fijas las columnas, allí es donde se refleja si tiene
familias o no.
4.- Sí también es correcto.

Gracias por el apoyo, :))
Saludos.
Flor.
Respuesta Responder a este mensaje
#8 Héctor Miguel
01/10/2007 - 22:28 | Informe spam
hola, Flor !

1) [para mi] es mas rapido contar elementos/celdas/... haciendo uso de las funciones de hoja de calculo
[como contar.si(...) AUN por codigo] en lugar de *buclear* haciendo un recorrido *fila-por-fila* ;)

[p.e.] el codigo que expusiste [de varias lineas] podria recortarse/eficientarse/... +/- de la siguiente manera:

Sub Prueba()
Application.ScreenUpdating = False
Dim FamHoj1 As Byte, FamHoj2 As Byte, _
FamHoj3 As Byte, FamHoj4 As Byte, Hoja As Byte
With Application
FamHoj1 = .CountIf(Worksheets(1).Range("s1:s169"), ">0")
FamHoj2 = .CountIf(Worksheets(2).Range("n1:n169"), ">0")
FamHoj3 = .CountIf(Worksheets(3).Range("r1:r169"), ">0")
FamHoj4 = .CountIf(Worksheets(4).Range("n1:n169"), ">0")
End With
MsgBox "Hoja1 = " & FamHoj1 & vbCr & _
"Hoja2 = " & FamHoj2 & vbCr & _
"Hoja3 = " & FamHoj3 & vbCr & _
"Hoja4 = " & FamHoj4
End Sub

2) para completar la parte de seleccionar las hojas que *realmente* tengan *familias*...
he modificado la estructura por medio de una matriz que...
OJO: por facilidad, requiere al inicio del modulo de la instruccion: -> Option Base 1
[para que las matrices de tipo variant no se inicien en 0 -cero- sino en 1 -uno-]
ademas: se requiere que exista [al menos] una hoja mas de las 4 que se revisan [hoja 5 ?]

prueba con la siguiente opcion:

Option Base 1
Sub Prueba_2()
Application.ScreenUpdating = False
Dim FamHoj(4) As Byte, Hoja As Byte, Varias As Byte, Rangos
Rangos = Array("s1:s169", "n1:n169", "r1:r169", "n1:n169")
Worksheets(Worksheets.Count).Select
With Application
For Hoja = 1 To 4
FamHoj(Hoja) = .CountIf(Worksheets(Hoja).Range(Rangos(Hoja)), ">0")
If FamHoj(Hoja) Then
Varias = Varias + 1
Worksheets(Hoja).Select Replace:=(Varias = 1)
End If
Next
End With
MsgBox "Familias en la hoja1 = " & FamHoj(1) & vbCr & _
"Familias en la hoja2 = " & FamHoj(2) & vbCr & _
"Familias en la hoja3 = " & FamHoj(3) & vbCr & _
"Familias en la hoja4 = " & FamHoj(4)
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ las consultas anteriores __
antes de *meterle mano* a la fraccion de codigo que expones...
y DESPUES de que se han llevado a cabo todas las instrucciones en esa fraccion de codigo...

1) que uso posterior les das a las variables: FamHoj1, FamHoj2, FamHoj3 y FamHoj4 -?-

2) es *constante* buscar en el rango de filas 1 a 169 ? [segun la variable: F_Max]

3) es *fija* la columna donde *cuentas* cantidades mayores a 0 [cero] en cada una de lashojas -?-
hoja(1)=col_19, hoja(2)=col_14, hoja(3)=col_18, hoja(4)=co_14

4) es correcto *asumir/suponer/...* que lashojaslas buscas *por indice* ?
no importa su nombre en las etiquetas ni si las cambian de posicion ???

[si hubiera algun detalle en el tintero... es hora de comentarlo] :))



1.- Le muestro un mensaje al usuario sobre la cantidad de familias que tiene por hoja.
2.- Si es una constante, para nada varia.
3.- Sí son fijas las columnas, allí es donde se refleja si tiene familias o no.
4.- Si tambien es correcto.
Respuesta Responder a este mensaje
#9 colmenaf
03/10/2007 - 15:38 | Informe spam
On 1 oct, 16:28, "Héctor Miguel"
wrote:
hola, Flor !

1) [para mi] es mas rapido contar elementos/celdas/... haciendousode las funciones de hoja de calculo
[como contar.si(...) AUN por codigo] en lugar de *buclear* haciendo un recorrido *fila-por-fila* ;)

[p.e.] el codigo que expusiste [de varias lineas] podria recortarse/eficientarse/... +/- de la siguiente manera:

Sub Prueba()
Application.ScreenUpdating = False
Dim FamHoj1 As Byte, FamHoj2 As Byte, _
FamHoj3 As Byte, FamHoj4 As Byte, Hoja As Byte
With Application
FamHoj1 = .CountIf(Worksheets(1).Range("s1:s169"), ">0")
FamHoj2 = .CountIf(Worksheets(2).Range("n1:n169"), ">0")
FamHoj3 = .CountIf(Worksheets(3).Range("r1:r169"), ">0")
FamHoj4 = .CountIf(Worksheets(4).Range("n1:n169"), ">0")
End With
MsgBox "Hoja1 = " & FamHoj1 & vbCr & _
"Hoja2 = " & FamHoj2 & vbCr & _
"Hoja3 = " & FamHoj3 & vbCr & _
"Hoja4 = " & FamHoj4
End Sub

2) para completar la parte de seleccionar las hojas que *realmente* tengan *familias*...
he modificado la estructura por medio de una matriz que...
OJO: por facilidad, requiere al inicio del modulo de la instruccion: -> Option Base 1
[para que las matrices de tipo variant no se inicien en 0 -cero- sino en 1 -uno-]
ademas: se requiere que exista [al menos] una hoja mas de las 4 que se revisan [hoja 5 ?]

prueba con la siguiente opcion:

Option Base 1
Sub Prueba_2()
Application.ScreenUpdating = False
Dim FamHoj(4) As Byte, Hoja As Byte, Varias As Byte, Rangos
Rangos = Array("s1:s169", "n1:n169", "r1:r169", "n1:n169")
Worksheets(Worksheets.Count).Select
With Application
For Hoja = 1 To 4
FamHoj(Hoja) = .CountIf(Worksheets(Hoja).Range(Rangos(Hoja)), ">0")
If FamHoj(Hoja) Then
Varias = Varias + 1
Worksheets(Hoja).Select Replace:=(Varias = 1)
End If
Next
End With
MsgBox "Familias en la hoja1 = " & FamHoj(1) & vbCr & _
"Familias en la hoja2 = " & FamHoj(2) & vbCr & _
"Familias en la hoja3 = " & FamHoj(3) & vbCr & _
"Familias en la hoja4 = " & FamHoj(4)
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ las consultas anteriores __



>> antes de *meterle mano* a la fraccion de codigo que expones...
>> y DESPUES de que se han llevado a cabo todas las instrucciones en esa fraccion de codigo...

>> 1) queusoposterior les das a las variables: FamHoj1, FamHoj2, FamHoj3 y FamHoj4 -?-

>> 2) es *constante* buscar en el rango de filas 1 a 169 ? [segun la variable: F_Max]

>> 3) es *fija* la columna donde *cuentas* cantidades mayores a 0 [cero] en cada una de lashojas -?-
>> hoja(1)=col_19, hoja(2)=col_14, hoja(3)=col_18, hoja(4)=co_14

>> 4) es correcto *asumir/suponer/...* que lashojaslas buscas *por indice* ?
>> no importa su nombre en las etiquetas ni si las cambian de posicion ???

>> [si hubiera algun detalle en el tintero... es hora de comentarlo] :))

> 1.- Le muestro un mensaje al usuario sobre la cantidad de familias que tiene por hoja.
> 2.- Si es una constante, para nada varia.
> 3.- Sí son fijas las columnas, allí es donde se refleja si tiene familias o no.
> 4.- Si tambien es correcto.- Ocultar texto de la cita -

- Mostrar texto de la cita -



Gracias Héctor... Excelente... Funciona de maravillas,
Definitivamente el que sabe... sabe... :D
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida