2009-06-30 2 views
8

In VB.NET, IntelliSense si apre non appena si inizia a digitare che offre un elenco completo di cose che è possibile utilizzare in quel momento. IntelliSense in VBA tuttavia, non calcia per me finché non viene inserito un punto dopo la parte che si sta utilizzando. Per esempio, vado nell'editor VBA in Excel 2007 e inizio a digitare la parola "Range" ma IntelliSense non viene visualizzato fino a quando non digito "Range." dopo di che mi darà un elenco di cose che posso usare in quel punto .C'è un modo per ottenere IntelliSense completo per VBA in Access ed Excel 2007?

C'è un modo per rendere IntelliSense venire presto nell'editor di VBA, in modo che io sono in grado di visualizzare un elenco di cose che possono essere utilizzati come Davg, DCount, ecc?

risposta

13

No, ma è possibile digitare prima Excel. Dopodiché, scoprirai più di quanto tu abbia mai voluto sapere su Excel.

Uguale all'accesso. Digita Access e un punto e troverai DCount lì.

3

VBA è una bestia diversa da .NET, quindi non sono sicuro di come avviare IntelliSense più veloce. Trovo che ho lo stesso problema che si sta avendo nel 2003.

Suggerirei comunque di controllare il Visualizzatore oggetti. Nel 2003, è Visualizza> Browser degli oggetti, o F2, nel VB Editor. Trovo che sia un ottimo modo per esplorare le librerie di classi disponibili. Ti mostrerà tutto ciò a cui ti riferisci attualmente e una volta che fai riferimento a più librerie, queste verranno mostrate anche nel Browser degli oggetti.

27

Basta premere Ctrl + Spazio in qualsiasi momento nell'editor.

+0

Anche questo funzionerà. –

+0

Hai cambiato la mia vita per sempre. Sono euforico e depresso allo stesso tempo. Ho sprecato per sempre anni della mia vita senza saperlo. – MatthewHagemann

9

Sfortunatamente in Excel alcuni oggetti sono dichiarati "As Object" e Object non ha alcun metodo in modo che Intellisense non sia in grado di visualizzarne nessuno. Il principale colpevole è Excel.ActiveSheet.

Se si conosce effettivamente il tipo, è possibile dichiararlo in modo esplicito e assegnarlo al valore desiderato. 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' potrebbe anche essere un' Chart': in tal caso si otterrebbe una mancata corrispondenza di tipo se 'mySheet' fosse stato dichiarato come Foglio di lavoro. Ecco perché ActiveSheet è di tipo "oggetto": non sarà sempre un foglio di lavoro ... –

+0

Suppongo anche che questo si applichi a 'ThisWorkbook'. È vero? – Taelsin