# Excel 2k3 VBA: Zählen der belegten Zeilen



## WiZdooM (21. April 2010)

Hi

Ich habe ein Problem mit folgendem Stück Code:

```
Dim LetztezeileTab1 As Integer
Sheets("Tabelle1").Select
LetztezeileTab1 = Cells(Rows.Count, 1).End(xlUp).Row
```

Der soll mir eigentlich eine Anzahl aller belegten Zeilen liefern, die kurz zuvor von einer Datenbank abgerufen werden:

```
connstring = "ODBC;DSN=dummy;UID=dummy;PWD=dummy;DBQ=dummy_db"
sqlstring = "SELECT * FROM dummy_db.dummytable"
With Worksheets("Tabelle1").QueryTables.Add(Connection:=connstring, _
Destination:=Range("A1"), Sql:=sqlstring)
.Refresh
End With
```
Das Aber ist Folgendes:
Setze ich einen Breakpoint auf die o.g. Codezeile, wird der richtige Wert von 2739 beim Einzelschritt in LetztezeileTab1 geschrieben.
Setze ich jedoch den Breakpoint auf die nächste Zeile ausführbaren Codes, steht in der Variable lediglich eine 1.

Jetzt frage ich mich: Warum ?! Das ergibt für mich überhaupt keinen Sinn. Ich habe schon versucht dem Aufruf etwas "Zeit" zu verschaffen mit dem gleichen Ergebnis, dass eben nur bei der Verwendung des Einzelschrittes der korrekte Wert der Anzahl belegter Zeilen ermittelt wird.

Edit: Ich habe die Vermutung, dass es mit dem Refresh zusammnehängt. Denn setze ich eine Warteroutine vor den Zählaufruf beinhaltet das Blatt "Tabelle1" lediglich eine Zelle mit dem Inhalt "Externe Daten: Empfange Daten..." bis zu dem Zeitpunkt wo entweder die Sub am ende ist oder ein Breakpoint auftritt. Wie lässt sich diese Problematik umgehen ?


----------

