Ich muß in meinem Tabellenblatt den Bereich „A1:L1000“ überwachen und immer die unterste Zeile wissen.
Die Zellen der Spalten A bis L werden aber nicht gleichmäßig gefüllt, sodaß ich, würde ich die Spalten einzeln abfragen, immer unterschiedliche Werte erhalten würde.
Überprüfe ich den Bereich wie oben angegeben, dann erhalte ich immer nur die unterste Zeile aus Spalte A, obwohl in den Spalten B bis L schon eine ganz andere Zeile die unterste sein kann.
Gibt es eine Syntax, mit der ich den gesamten Bereich überwachen kann?
Ich muß in meinem Tabellenblatt den Bereich „A1:L1000“
überwachen und immer die unterste Zeile wissen.
Die Zellen der Spalten A bis L werden aber nicht gleichmäßig
gefüllt, sodaß ich, würde ich die Spalten einzeln abfragen,
immer unterschiedliche Werte erhalten würde.
Überprüfe ich den Bereich wie oben angegeben, dann erhalte ich
immer nur die unterste Zeile aus Spalte A, obwohl in den
Spalten B bis L schon eine ganz andere Zeile die unterste sein
kann.
Gibt es eine Syntax, mit der ich den gesamten Bereich
überwachen kann?
Du kannst das mit den folgenden Funktionen (die für die letzte Spalte ist auch gleich mit dabei) sehr einfach tun.
Function LastRow(rngBereich As Range) As Long
If Application.WorksheetFunction.CountA(rngBereich) \> 0 Then
LastRow = rngBereich.Find(What:="\*", \_
SearchOrder:=xlByRows, \_
SearchDirection:=xlPrevious).Row
Else
LastRow = 0
End If
End Function
Function LastColumn(rngBereich As Range) As Long
If Application.WorksheetFunction.CountA(rngBereich) \> 0 Then
LastColumn = rngBereich.Find(What:="\*", \_
SearchOrder:=xlByColumns, \_
SearchDirection:=xlPrevious).Row
Else
LastColumn = 0
End If
End Function
Falls nicht bekannt: hier eine möglicherweise interessante
Ergänzung.
Statt dieser Zeile:
If Application.WorksheetFunction.CountA(rngBereich) > 0 Then
diese:
If IsMissing(rngBereich) = False Then
Die Funktion „IsMissing()“ überprüft, ob der Funktion das
Argument übergeben wurde.
Ja, das ist mir bekannt - die Zeile hat jedoch einen etwas anderen Hintergrund
Wenn der Bereich der geprüft wird absolut leer ist, kann die .Find-Methode nichts finden und gibt einen Error zurück. Diesen könnte man zwar mit OnError abfangen, mit ist jedoch die vorgängige Prüfung lieber und daher zählt die obige Code-Zeile die Anzahl der Inhalte im übergebenen Bereich.
Auf eine Prüfung ob überhaupt ein Bereich übergeben worden ist habe ich bewusst verzichtet.