Microsoft Excel

Herbers Excel/VBA-Archiv

End Funktion, Zeilen zählen | Herbers Excel-Forum


Betrifft: End Funktion, Zeilen zählen von: gröbi
Geschrieben am: 11.06.2009 16:09:53

Hallo,

ich rufe aus einer Access Applikation Excel mit Late-Binding auf (CreatObject...) auf.
Ich öffne eine Arbeitsmappe und wähle ein Arbeitsblatt aus. In diesem Arbeitsblatt
will ich nun die letzte Zeile in der Spalte A mit der nachfolgenden Funktion ermitteln

Alle Variablen sind deklariert.
xlWb = das Workbook
xlTabellenende = die gesuchte letzte Zeile in der Spalte A
colMenge = die erste Spalte im Worksheet

In der nachfolgedenden Codezeile entsteht der Laufzeitfehler 1004
(Anwendungs oder objektdefinierter Fehler).
Was ist in dieser Zeile falsch???

xlTabellenende = xlWb.ActiveSheet.Cells(xlWb.ActiveSheet.Rows.Count, colMenge).End(xlUp).Rows

  

Betrifft: XL-Konstante "xlUp" ist nicht bekannt von: NoNet
Geschrieben am: 11.06.2009 16:23:34

Hallo Gröbi,

auch wenn Du ansonsten alles korrekt referenziert hast :
Die Excel-Konstante xlUp ist in Access (und anderen Anwendungen) nicht bekannt !

Deklariere sie in Access als Konstante : Const xlUp=-4162

Oder : verwende im Code anstelle xlUp den numerischen Wert -4162 :

xlTabellenende = xlWb.ActiveSheet.Cells(xlWb.ActiveSheet.Rows.Count, colMenge).End(-4162).Rows

Die CONST-Variante ist jedoch sinnvoller - auch für weitere Verwendung im Code !

Gruß, NoNet


  

Betrifft: AW: XL-Konstante "xlUp" ist nicht bekannt von: gröbi
Geschrieben am: 11.06.2009 16:34:58

Danke für den Tipp, funzt prima!

Ich habe vergessen zu erwähnen das ich eine Variable namens xlUp deklariert habe:
Dim xlUp as Long
Habe dieser Variablen aber keinen Wert zugewiesen.

Alleine mit der MSDN wäre ich auf dem Holzweg gewesen...

Gruß, gröbi.


  

Betrifft: ...Richtig, NoNet, vielleicht sollte... von: Luc:-?
Geschrieben am: 11.06.2009 16:36:57

...Gröbi aber auch gleich die ganze Enum-Proc nachbauen - mit allen anderen Werten auch...?! Wäre ja auch kein Hit... ;-)
Gruß Luc :-?


  

Betrifft: OK, Luc, aber wie geht das ? von: NoNet
Geschrieben am: 11.06.2009 16:43:52

Hey Luc,

klingt interessant ! Hast Du dafür auch ein passendes Code-Beispiel (z.B. in Deiner "Konservenkiste" ;-) ?
Würde mich interessieren, wie das aussieht, da ich es bislang noch nie benötigt verwendet habe.

Thanks in advance, NoNet


  

Betrifft: Ist ganz einfach,... von: Luc:-?
Geschrieben am: 11.06.2009 18:22:22

...NoNet,
habe ich jetzt schon des Öfteren angewendet. Ein Bsp...

Enum xlTrialState: xlRTrue = -1: xlFalse: xlPTrue: End Enum

Den Typ msoTrialState gibt's ja schon, xlTrialState fehlt bisher (auch in xl12). Ansonsten ist eine mit xl... anfangende Typ- bzw Wertbezeichnung etwas riskant - wer weiß, was sich MS noch einfallen lässt. So erstellte MS wohl auch ursprgl alle zu einem Typ vereinigten Konstantenwerte, denn darum handelt es sich eigentlich. Deshalb darf eine bestimmte Enum-Proc auch nur in einem ("normalen") Modul eines Projekts (auch AddIn) verwendet wdn (VBA warnt anderenfalls).
Die Werte müssen ganzzahlig sein. Erhöhen sie sich stets um 1 (Durchnummerierung) muss nur der 1.Wert angegeben wdn, wenn der nicht =0 ist.
Der Vorteil liegt auf der Hand. Die Namen der Werte wdn im VBE angezeigt, wenn eine Variable mit dem Namen der Enum-Proc deklariert wird, also bspw Dim varxyz As xlTrialState. Schreibst du 'varxyz = ' wird im PopUp xlFalse, xlPTrue und xlRTrue angezeigt (Sortierung nach Name).
Gruß Luc :-?


  

Betrifft: OK, aber ich hatte mir etwas anderes vorgestellt von: NoNet
Geschrieben am: 11.06.2009 23:03:00

'n Abend, Luc,

Danke für deine Antwort.
Ich hatte mir allerdings etwas anderes vorgestellt/erwartet :
Ich dachte, man könne durch diese Methode "ernsthaft" auf die Konstanten der entfernten Application zugreifen, so wie das bei "Early binding" der Fall ist.

Im vorliegenden Fall ist wohl auch ein Enum nicht sinnvoll, da die xlKonstanten der .End()-Methode folgende (nicht zusammenhängende) Werte besitzen :

xldown = -4121 / xltoleft = -4159 / xltoright = -4161 / xlup = -4162

Dennoch Danke :-) , habe wieder etwas dazu gelernt.

Gruß, NoNet


  

Betrifft: Warum nicht sinnvoll?! In xlVBA ist das ja... von: Luc:-?
Geschrieben am: 12.06.2009 00:21:23

...wohl auch so gemacht worden, sonst gäbe es sicher keinen DclTyp (xlDirection) dafür, NoNet.
Ansonsten hängt das ganz vom "Geschmack" des Pgmierers ab. In Xl-VBA gibt's besonders viele derartige Konstt, in Wd-VBA deutlich weniger (vbKonstt), dafür mit längeren Namen. Hinzu kommen dann noch xl... bzw wd... usf sowie msoKonstt, von denen die Meisten auch "enummeriert" sind.
Ansonsten muss im acProjekt halt auf die xlBibliothek verwiesen wdn...
GutNacht, Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "End Funktion, Zeilen zählen"