VBA: ScrollArea mittels Variablen festlegen

Hallo Experten,

ist es möglich die ScrollArea eines Tabellenblatts mit Hilfe von Variablen festzulegen?

Ich habe mir das in etwa so vorgestellt:
Zunächst bestimme ich die maximale Anzahl an verwendeten Zeilen in einem Bereich und speicher den Zeilenindex in einer Long-Variablen:

Dim maxZeilen As Long
For Each Zelle In Bereich
If Zelle.Value = „“ Then
maxZeilen = Zelle.Row
Exit For
End If
Next Zelle

Dann möchte ich die ScrollArea anpassen:

Tabelle1.ScrollArea = „$B$3:blush:B$“ & maxZeilen

Leider bekomme ich da eine Fehlermeldung: „…Methode für das Objekt […] ist fehlgeschlagen.“

Könnt ihr mir bitte sagen wie ich das anders lösen kann?

Vielen Dank schonmal.

Gruß
Thomas

Hallo Thomas.

Ich habe die Anweisung mit der ScrollArea ausprobiert und sie funktioniert.

For Each Zelle In Bereich

Was ist denn „Bereich“? Hast Du das hier nur so geschrieben, oder verwendest Du diese Variable tatsächlich so in Deinem Code?
Wenn „Bereich“ nicht irgendwo definiert ist, dann wird das Ergebnis Deiner For-Each-Next-Schleife möglicherweise 0 sein.

Viele Grüße
Carsten

Hallo Carsten,

danke für die schnelle Antwort.

Ich habe die Anweisung mit der ScrollArea ausprobiert und sie
funktioniert.

Das ist seltsam. Wie gesagt, bei mir kommt eine Fehlermeldung. Hast Du das genauso gemacht wie ich beschrieben habe?

For Each Zelle In Bereich

Was ist denn „Bereich“? Hast Du das hier nur so geschrieben,
oder verwendest Du diese Variable tatsächlich so in Deinem
Code?

Sowohl „Zelle“ als auch „Bereich“ habe ich vorher natürlich als Variable deklariert.

Dim Zelle, Bereich As Range
Set Bereich = Tabelle1.Range(„B:B“)

Wenn „Bereich“ nicht irgendwo definiert ist, dann wird das
Ergebnis Deiner For-Each-Next-Schleife möglicherweise 0 sein.

Die For-Schleife funktioniert einwandfrei. In meiner Variablen „maxZeilen“ wird der Index der letzten verwendeten Zeile gespeichert. Das habe ich geprüft…

Kannst Du bitte Deinen Code posten. Werde dann nochmal mit meinem vergleichen.

Schön´ Gruß
Thomas

Das ist seltsam. Wie gesagt, bei mir kommt eine Fehlermeldung.
Dim Zelle, Bereich As Range
Set Bereich = Tabelle1.Range(„B:B“)
Dim maxZeilen As Long
For Each Zelle In Bereich
If Zelle.Value = „“ Then
maxZeilen = Zelle.Row
Exit For
End If

Hi Thomas,
besteht Tabellenblattschutz o.ä.?
probiers mal so(ab XL2000 wegen IIf):

Sub tt()
Dim maxZeilen As Long
with worksheets("Tabelle1")
 maxZeilen=iif(.cells(rows.count,2)"",rows.count,.cells(rows.count,2).end(xlup).row)
 .scrollarea="B1:B" & maxZeilen 
end with
End Sub

Gruß
Reinhard

Hallo Reinhard,

habe die Fehlermeldung nur aufgrund eines sehr dummen Fehlers meinerseits bekommen. Der Code, so wie ich ihn am Anfang beschrieben habe, funktioniert tatsächlich einwandfrei.

Die Variable ‚maxZeilen‘ wird bei mir während des Ereignisses Workbook_Open gespeichert. Da ich die Codezeile ‚Tabelle1.ScrollArea = „B1:B“ & maxZeilen‘ aber ausprobiert habe während das Programm schon lief, kann das natürlich nicht funktionieren. Nach erneutem Programmstart war alles kein Problem mehr…

Manchmal sind Fehler einfach zu dämlich.

Vielen Dank.

Gruß
Thomas