2016-08-23 2 views
1

Ich bin neu in VBA. Ich habe Probleme mit dem Intellisense, aber ich habe hier keine Antworten gefunden, es scheint, als hätten die Leute ein anderes Problem als ich.VBA Intellisense nur nach der ersten Periode und keine Ebenen nach der Eingabe der ersten

Jedes Mal, wenn ich tippe: FilePath = ActiveWorkbook.ActiveSheet.Cells (5, 6) .Value

es works-- dies ein gültiger Befehl ist, aber ich versuche zu lernen, und wenn ich das tue:

Filepath = ActiveWorkbook.

Dann kommt das Intellisense und ActiveSheet wird da sein. Aber dann, wenn ich ein anderes gebe. Nach Active Sheet werden keine anderen Optionen angezeigt, dh Zellen werden nicht als Option angezeigt. Es ist also so, als gäbe es nach dem ersten Intellisense keine anderen Methoden/Eigenschaften mehr.

aber wenn ich, wie etwas zu tun, waren:

dim mysheet als Arbeitsblatt

Set mysheet = ActiveWorkbook.ActiveSheet

und dann mache ich mysheet. Das IntelliSense wird dafür aufkommen und mir "Zellen" und andere Optionen zeigen, aber keine Ebenen darunter. Jede Hilfe wäre willkommen.

+0

Es ist, weil Activesheet ein Diagramm sein könnte. Indem Sie es als Arbeitsblatt deklarieren, geben Sie Intellisense mehr Informationen, mit denen Sie arbeiten können. –

Antwort

4

ActiveSheet ist eigentlich ein Object, kein Worksheet (überprüfen Sie den Object Explorer in der VBE mit F2). So weiß Intellisense nicht, dass es ein Worksheet ist, und weiß nicht, welche Mitglieder es hat. Wenn Sie es explizit auf eine Worksheet Variable setzen, kennt es den Typ der Variablen und kann dies verwenden, um die zugehörigen Elemente zu bestimmen.

Object Explorer

ActiveSheet ist ein Object weil Chart Objekte auch ihre eigene Bettwäsche haben können, und wenn ein Chart Blatt zur Zeit aktiviert ist, wird es der Wert von ActiveSheet sein. Dies ist der gleiche Grund Workbook.Worksheets und Workbook.Sheets beide existieren - die ehemalige ist Worksheet Objekte nur, während die letzteren können auch Chart Objekte enthalten. Folglich gibt Sheets(1) auch eine Object zurück, so dass die Eingabe ActiveWorkbook.Sheets(1). auch Intellisense nicht auslöst.

Verwandte Themen