La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Excel/1319752-Metodos-de-objetos-que-usan-datos-de-hojas-y-no-requieren-que-estas-esten-activas.html

Metodos de objetos que usan datos de hojas y no requieren que estas esten activas

Metodos de objetos que usan datos de hojas y no requieren que estas esten activas

Publicado por Luis Fernando (3 intervenciones) el 21/03/2012 19:17:44
Noté con la practica, que en copy paste no requiere que las hojas donde estan los datos origen y destino no requiere que las hojas esten activas... pregunta cuales otros metodos que involucran datos en hojas no requieren que se activen las hojas involucradas?

esto para efectos de optimizar codigo
Imágen de perfil de JuanC

Metodos de objetos que usan datos de hojas y no requieren que estas esten activas

Publicado por JuanC (1237 intervenciones) el 21/03/2012 20:34:42
practicamente nunca es necesario activar una hoja para trabajar sobre ella,
alcanza (y a veces sobra) con la referencia 3D (libro, hoja, rango)

ej:

Set ws1 = Hoja1
ws1.Range("A2").Value = 10

Saludos, desde Baires, JuanC

Metodos de objetos que usan datos de hojas y no requieren que estas esten activas

Publicado por Fer9856 (3 intervenciones) el 21/03/2012 21:07:03
Porque entonces la sigueinte instruccion exige que la hoja resultado este activa o seleccionada?

Sheets("RESULTADO").Range("A" & BALOTO.txtsorteoactualizado.Value + 2 & "").Select
If ActiveCell.Offset(-1, 0).Value = "SORTEO" Then ' pero si vamos a arrancar desde el primer sorteo
ñ = 1 'vamos a aponerle a 1 la variable parametro para ubicara la primera celda a llenar
Else
ñ = ActiveCell.Offset(-1, 0).Value + 1 'sino vamos a arrancar desdde cero ubicamos la posicion limpia mas disponible para llenar los reltuados que vamos a actualizar
End If

es por el select? osea que cada vez que use select de un rango se requiere que la hoja este activa?

saludos
Imágen de perfil de JuanC

Metodos de objetos que usan datos de hojas y no requieren que estas esten activas

Publicado por JuanC (1237 intervenciones) el 21/03/2012 22:51:37
en ese código selecciona una celda para luego usarla como pivot (mediante ActiveCell.Offset)
pero de ninguna manera es la única forma de hacerlo...

Set rng = Sheets("RESULTADO").Range("A" & BALOTO.txtsorteoactualizado.Value + 2 & "")
If rng.Offset(-1, 0).Value = "SORTEO"

Saludos, desde Baires, JuanC