2009-06-30 21 views
8

En VB.NET, el IntelliSense aparece tan pronto como comienza a escribir, lo que le da una lista bastante completa de cosas que puede usar en ese momento. El IntelliSense en VBA, sin embargo, no funciona para mí hasta que se coloca un punto después de la parte que está usando. Por ejemplo, voy al editor de VBA en Excel 2007 y comienzo a escribir la palabra "Range", pero el IntelliSense no aparece hasta que escribo "Range." y luego me da una lista de cosas que puedo usar en ese punto .¿Hay alguna manera de obtener IntelliSense completo para VBA en Access y Excel 2007?

¿Hay alguna manera de hacer que IntelliSense aparezca antes en el editor de VBA, de modo que pueda ver una lista de cosas que se pueden usar como Davg, DCount, etc.?

Respuesta

13

No, pero primero puede escribir Excel. Ponga un período después de eso y descubrirá más de lo que siempre quiso saber sobre Excel.

Lo mismo con acceso. Escriba Access y un punto, y allí encontrará DCount.

3

VBA es una bestia diferente que .NET, así que no estoy seguro de cómo abrir el IntelliSense más rápido. Creo que tengo el mismo problema que tienes en 2003.

Sugiero que revises el Object Browser. En 2003, es View> Object Browser, o F2, en el Editor de VB. Encuentro que es una gran manera de explorar las bibliotecas de clases disponibles. Le mostrará todo lo que ha referenciado actualmente y una vez que haga referencia a más bibliotecas, también se mostrarán en el Examinador de objetos.

27

Sólo tiene que pulsar Ctrl + espacio en cualquier momento en el editor.

+0

Esto funcionará también. –

+0

Has cambiado mi vida para siempre. Estoy eufórico y deprimido al mismo tiempo. He desperdiciado acumulativamente años de mi vida sin saber esto. – MatthewHagemann

9

Desafortunadamente en Excel, algunos objetos se declaran como 'Objeto' y Object no tiene ningún método por lo que Intellisense no podrá mostrar ninguno. El principal culpable es Excel.ActiveSheet.

Si sabe en realidad qué tipo es, puede declararlo explícitamente y asignarlo al valor que desee. EG:

Dim mySheet As Worksheet 
Set mySheet = ActiveSheet  'This line would cause a type mismatch error if mySheet was declared as something other than a WorkSheet 
mysheet.[All The Intellisense For a Worksheet Pops Up] 
+2

'ActiveSheet' también podría ser un' Chart': en ese caso, obtendría una discrepancia de tipo si 'mySheet' se hubiera declarado como Worksheet. Es por eso que ActiveSheet es del tipo "objeto": no siempre va a ser una hoja de trabajo ... –

+0

También estoy asumiendo que esto se aplica a 'ThisWorkbook'. ¿Es eso cierto? – Taelsin

Cuestiones relacionadas