Ayuda formula desde código

14/11/2007 - 13:27 por Antonio | Informe spam
Hola a todos, para calcular el número de ceros que hay en un rango hago

iNum = Application.WorksheetFunction.CountIf(ActiveSheet.Range("H21:I34"),
"=" & 0)

Que funciona correctamente, el problema es que quiero calcula los ceros de
otra hoja de otro fichero para hacer esto
xlwSemana.Sheets(3).Select
xlwSemana.Sheets(3).Activate (siendo xlwSemana As Excel.Workbook)
El problema es que ActiveSheet sigue siendo siempre la otra hoja y aunque he
seleccionado y activado esta no lo cambia.

Un saludo y muchas gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
14/11/2007 - 22:36 | Informe spam
hola, Antonio !

Mostrar la cita
(segun parece) no necesitas ni la instruccion ".Select" ni tampoco la ".Activate" (aplicadas a un objeto establecido/declarado)
prueba modificando solamente la instruccion que ya te ha funcionado:
de: -> iNum = Application.WorksheetFunction.CountIf(ActiveSheet.Range("H21:I34"), "=" & 0)
a: -> iNum = Application.WorksheetFunction.CountIf(xlwSemana.Sheets(3).Range("H21:I34"), "=" & 0)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
#2 Antonio
15/11/2007 - 13:47 | Informe spam
Hola Héctor Miguel, muchas gracias por tu ayuda, intento lo que me has dicho
que tiene muy buena pinta y me da un error, en el control de errores me da el
numero 13, "No coinciden los tipos", en el rango indicado
las celdas tienen un formato de número no se si será por esto

(utilizo iNum =
Application.WorksheetFunction.CountIf(xlwSemana.Sheets(3).Range("H21:I34"),
"=" & 0)
iNum es una variable de tipo integer

Gracias por tu ayuda

"Héctor Miguel" wrote:

Mostrar la cita
#3 Héctor Miguel
15/11/2007 - 17:46 | Informe spam
hola, Antonio !

Mostrar la cita
1) de tu consulta anterior, donde mencionas que: "... (siendo xlwSemana As Excel.Workbook).."
se entiende que declaras una variable de objeto (p.e.) Dim xlwSemana As Excel.Workbook

2) antes de poder usar una variable de objeto es necesario establecer su referencia (p.e.)
Set xlwSemana = Workbooks("cualquier libro abierto.xls")

3) una vez establecida la referencia a la variable de objeto, ya puedes usar sus colecciones/objetos/propiedades/...
(p.e.) iNum = Application.WorksheetFunction.CountIf(xlwSemana.Sheets(3).Range("H21:I34"), "=" & 0)

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

__ las consultas anteriores __
Mostrar la cita
#4 Antonio
15/11/2007 - 18:04 | Informe spam
Hola Hector Miguel, te agradezco tu esfuerzo

Efectivamente hago Set xlwSemana = xlFichero.Workbooks.Open(stRuta)

En stRuta le paso la ruta enterea del fichero, esto funciona bien y puedo
acceder a los datos moviendome por las hojas, es cuando hago iNum =
Application.WorksheetFunction.CountIf(xlwSemana.Sheets(3).Range("H21:I34"),
"=" & 0) cuando da error, si hago iNum =
Application.WorksheetFunction.CountIf(ActiveSheet.Range("H21:I34"), "=" & 0)
me coge el rango del fichero desde que lo abro, que es el único que se ve,

Un saludo

"Héctor Miguel" wrote:

Mostrar la cita
#5 Héctor Miguel
15/11/2007 - 18:19 | Informe spam
hola, Antonio !

Mostrar la cita
1) cual es "la historia" de esta nueva variable de objeto: -> xlFichero ???

2) estas usando macros directas en excel ? (o estas instanciando excel desde otras aplicaciones -p.e. VB- ?)

3) por que la necesidad de tantos "brincos" entre distintas variables ? (xlFichero, xlwSemana, Workbooks.Open, ???)

me da la impresion de que existen mas de dos detalles aun "en el tintero" ?

saludos,
hector.

Mostrar la cita
Ads by Google
Search Busqueda sugerida