# Spalten- und Zeilen Anzahl eines Excel Sheets auslesen ?



## maybebaby (3. Juni 2007)

Gibt es eine Möglichkeit die Anzahl der Spalten und Zeilene aus einem Excel Sheet auszulesen ?

Ich wollte eine Schleife mit Zähler bis zum Ende durchlaufen lassen aber das macht meinen code noch unübersichtlicher, gab es nicht einen einfachen Befehl zum Auslesen von Spalten und Zeilen Anzahl ?

liebe grüße,
jackie


----------



## Yoah (4. Juni 2007)

Moin,

für die Anzahl der Zeilen habe ich etwas parat, versuchs einfach mal!

```
'Objektverweis auf Tabellenblatt setzen
    Set objWks = ActiveWorkbook.Worksheets(1)
    '  Bsp.: Spalte A setzen
    nCol = 1
    With objWks
      'Wenn Zellen mit Daten im Tabellenblatt enthalten sind...
        If Application.WorksheetFunction.CountA( _
              .Columns(nCol).EntireColumn) > 0 Then
          
          'Letzte mögliche Zelle in angegebener Spalte zuerst prüfen
            If Len(.cells(.rows.Count, nCol).Value) = 0 Then
                nLastRow = .cells(.rows.Count, nCol).End(xlUp).Row
            Else
                nLastRow = .rows.Count
            End If
            
            strMsg = "Die letzte Zeile, die in Spalte " & nCol & " Daten enthält, ist die Zeile " & nLastRow
        Else
            strMsg = "Die Spalte " & nCol & " enthält keine Daten!"
        End If
    End With
    
    strMsg = "Tabellenblatt-Name: " & objWks.Name & vbCr & vbCr & strMsg
    
    MsgBox strMsg, vbInformation, Title:="Titel und so...  - " & _
          "Letzte  Z e i l e  mit Daten in angegebener Spalte"
```


----------



## maybebaby (5. Juni 2007)

Hallo,
vielen Dank funktioniert super.

meine frage mag jetzt etwas banal klingen, aber wie kann ich die Spalten noch dazu auslesen ?


----------



## ronaldh (6. Juni 2007)

Hallo maybebaby,

das geht mit der UsedRange-Methode:


```
Set xlSheet = xlApp.ActiveWorkbook.Sheets(1)
   ColMax = xlSheet.UsedRange.Columns.Count
```

Viele Grüsse
ronaldh


----------



## maybebaby (6. Juni 2007)

wow so super kurz ? danke auf jeden fall ich werds morgen direkt ausprobieren


----------



## maybebaby (8. Juni 2007)

ich bekomme die fehlermeldung "Laufzeitfehler 424  objekt erforderlich"

wenn ich xl sheet durch den namen des sheets ersetze von dem ich die zeilen wissen möchte geht es auch nicht 

hm.. muss ich es irgendwo anders ersetzen? ich möchte von dem sheet resourcenplanung die anzahl der zeilen...


----------



## Alex F. (8. Juni 2007)

Du hast vermutlich die falschen Ersetzungen gemacht!

xlSheet müsste als Excel.Sheet deklariert sein also so 



```
dim xls as Worksheet
```

xlapp ist deine Excel Anwendung also so 


```
dim xlApp as Excel.Application
```

und diese muss natürlich erst einmal gesetzt werden über 


```
set xlApp = new Excel.Application 

'oder alternativ

set xlApp = GetObject(,"Excel.Application")
```

Der name für dein Sheet müsste 
hier hin xlApp.ActiveWorkbook.Sheets([*1*)

also etwa so 

```
set xlSheet = xlApp.ActiveWorkbook.Sheets("Tabelle1")
```

Grüsse bb 

Soviel zu der Aussage "So super kurz" ;-)


----------



## maybebaby (8. Juni 2007)

hallo 

also mein code sieht wie folgt aus aber die fehlermeldung wird nicht besser 


```
Dim xls As Worksheet
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
Set xlSheet = xlApp.ActiveWorkbook.Sheets("Resourcenplanung")

 Set xlSheet = xlApp.ActiveWorkbook.Sheets(1)
 ColMax = xlSheet.UsedRange.Columns.Count
 MsgBox ("anzahl der zeilen: " & ColMax)
```

  HILFE....


----------



## ronaldh (8. Juni 2007)

Hallo,

bb hat das richtig erklärt. Hier nochmal der ganze Code, wie es funktioniert:


```
Dim xlApp As Excel.Application
   Dim xlBook As Excel.Workbook
   Dim xlSheet As Excel.Worksheet
   
   Set xlApp = New Excel.Application
   Set xlBook = xlApp.Workbooks.Open(Dateiname)
   Set xlSheet = xlApp.ActiveWorkbook.Sheets(SheetNr)
   
  
   ColMax = xlSheet.UsedRange.Columns.Count
   MaxRows = xlSheet.UsedRange.Rows.Count


   xlBook.Close
   xlApp.Quit

   Set xlApp = Nothing
   Set xlBook = Nothing
   Set xlSheet = Nothing
```

Viele Grüsse
ronaldh


----------

