2011-08-24 11 views
22

¿Cuál es la diferencia entre el código VBA wb.Sheets(1).Cells.Select y wb.Sheets(1).Activate?Excel Select vs Activar

+0

rico responde a un simple pregunta :) – niko

Respuesta

35

La diferencia entre seleccionar es que puede seleccionar varios objetos a la vez. Los objetos que se seleccionan también se colocan en el objeto Selección en el que puede usar los métodos. A menos que seleccione varios objetos, al seleccionar (por ejemplo, una celda) se activa el objeto.

Activar simplemente hace que el objeto sea el objeto activo. La mejor manera de pensarlo es "se pueden seleccionar muchas celdas, pero solo una puede ser la celda activa en cualquier momento".

Nota: Ambos tienen algo en común: rara vez se necesitan y generalmente no hacen otra cosa que ralentizar el código. Puede trabajar directamente en un objeto sin seleccionarlo o activarlo, y se recomienda no utilizarlo a menos que sea necesario.

+1

+1 porque "se pueden seleccionar muchas celdas, pero solo una puede ser la celda activa en un momento dado". –

+0

@Issun +1 Buena respuesta – niko

+1

+1 para la nota final. – Zenadix

8

Aquí es una explicación de MSDN

Usted primer ejemplo wb.Sheets(1).Cells.Select le permite seleccionar varias celdas

El segundo wb.Sheets(1).Activate hace que la hoja activa.

Hay muchos recursos disponibles para ayudar con Excel VBA.

http://www.excel-vba.com/index.htm#Tutorial%20on%20Excel%20Macros

http://www.excel-vba-easy.com/

http://www.functionx.com/vbaexcel/

+0

wb.Sheets (1) .Activate hace que la * hoja * esté activa: la celda activa y la selección en esa hoja no cambiarán, y es posible que ni siquiera haya una celda activa en esa hoja. –

+0

mi mal, lo escribí mal, lo corregí. – Taryn

6

El primero selecciona todas las celdas de la primera hoja de la wb libro. Fallará si la hoja no está activa.

El segundo solo activa la primera hoja del libro de trabajo wb. No altera la selección o celda activa en esa hoja, y en algunos casos puede no haber un rango seleccionado o celda activa (por ejemplo, si hay un objeto en la hoja que está seleccionado actualmente).

+0

"Altera la selección" -> "No altera la selección". +1 –

+0

@ J-F: gracias - corrigió mi respuesta –

1

Select - "selecciona" Celda (s)

Activate - "activa" una hoja (como decir centrarse en una hoja)

veces u necesidad específica ACTIVATE la hoja, con el fin para hacer un SELECT

0

Activar se utiliza a menudo para hojas por ejemplo. La hoja activa se mostrará en la pantalla ... por lo tanto, solo puede haber una hoja activa

Seleccionar aunque se puede usar para varias celdas, por ejemplo. Rango (A1: B3) .Seleccionar seleccionará la celda múltiple que no es posible con activar

1

Encontré esta pregunta durante la búsqueda, tuve la misma pregunta. Aquí hay algo que he notado:

Sub Transfer(x As Long) 
    Dim Rng, ID as Range 
    Dim i, j, n As Long 

Worksheets(5).Activate 
n = Worksheets(5).Range(Range("I88"), Range("I88").End(xlToRight)).Count 

Worksheets(x).Select 
Set Rng = Worksheets(3).UsedRange.Find("Element", LookIn:=xlValues).Offset(1, 1) 
Set ElemID = Range(ElemRng.Offset(0, -1), ElemRng.Offset(0, -1).End(xlDown)) 
Set ElemRng = Worksheets(3).Range(ElemRng, ElemRng.End(xlToRight)) 
End Sub 

me encontré con que TENIDO para poner la hoja de trabajo.activar (o seleccionar) o el código se ejecutaría en:


de error en tiempo de ejecución: '1004' definido por la aplicación o error para objetos definidos