Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anfang und Ende eines Bereichs – VBA

Forumthread: Anfang und Ende eines Bereichs – VBA

Anfang und Ende eines Bereichs – VBA
30.11.2003 17:44:58
Martin
Hallo,

angenommen ich habe einen Bereich A1:A10.
Wie kann ich mittels VBA den Anfang (A1) und das Ende des Bereichs (A10) feststellen?

Gruss,
Martin
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anfang und Ende eines Bereichs – VBA
30.11.2003 17:50:16
PeterW
Hallo Martin,

was meinst du mit Bereich? ActiveSheet.UsedRange.Address, ActiveSheett.UsedRange.Rows.Count, ...?

Gruß
Peter
AW: Anfang und Ende eines Bereichs – VBA
30.11.2003 17:58:17
Martin
Hallo Peter,

ich bin dabei an einem dynamischen Diagramm zu basteln. Das klappt auch soweit schon, bloss nicht mit der x-Achse. Der Zeitraum kann zur Zeit nicht angepasst werden. Ich führe das jetzt nicht weiter aus, weil es zu umfangreich wäre.

Derzeit wird die Zeitachse aber über

With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/02/2003"
.MaximumScale = Sheets("data").Range("A2").End(xlDown)
.BaseUnit = xlDays
End With

festgelegt. Im Rahmen des dynamischen Diagrammes würde sich der Bereich aber von Range("A2").End(xlDown) zu eben einem anderen Bereich ändern. Würde ich den Anfangs- und Endwert diesen anderen Bereichs aber ermitteln können, könnte ich den hier einbringen.

Eine Alternative wäre mit modulübergreifenden Variablen zu arbeiten. Das wird in meinem Fall aber kompliziert und ich müsste zu viel ändern.

Hoffe, es ist jetzt klarer?!

Gruss,
Martin
Anzeige
AW: Anfang und Ende eines Bereichs – VBA
30.11.2003 18:05:24
PeterW
Hallo Martin,

klarer wird es schon - aber welche Rahmenbedingungen legen fest, welcher Bereich angesprochen werden soll? Sheets("data").Range("A2").End(xlDown) würde ich als dynamisch bezeichnen (wobei ich von Diagrammen in VBA keine Ahnung habe).

Gruß
Peter
AW: Anfang und Ende eines Bereichs – VBA
30.11.2003 18:15:21
Martin
Hallo Peter,

der User soll über eine Userform das Anfangs- und das Enddatum eingeben können, um das Diagramm für sich anpassen zu können. Dadurch wird der Ursprungsbereich (Sheets("data").Range("A2").End(xlDown)) eben seinerseits angepasst. Der dann bestimmte Bereich muss seinerseits aber mit VBA erkannt und ausgelesen werden können. Der Hintergrund ist der, dass ich im Code des Worksheets, in dem das Diagramm ist, den Code

With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/02/2003"
.MaximumScale = Sheets("data").Range("A2").End(xlDown)
.BaseUnit = xlDays
End With

habe. Eben der Teil "MaximumScale" muss dann angepasst werden können.

Der Code von Reinhard scheint aber genau das zu sein, was ich brauche, jedenfalls klappt es soweit ganz gut. Werde noch einige Tests machen.

Gruss,
Martin
Anzeige
AW: Anfang und Ende eines Bereichs – VBA
30.11.2003 17:52:47
Reinhard
Hi Martin,
auf eine ähnliche Frage meinerseits hat mir Andreas e folgende Lösung gezeigt:
(vorher Bereich A1:A10 markieren, dann Makro starten)

Sub MarkierungErmitteln()
MsgBox "Erste Zelle: " & _
Selection.Cells(1).Address(False, False) & vbLf & _
"Letzte Zelle: " & _
Selection.Cells(Selection.Cells.Count).Address(False, False)
End Sub


Gruß
Reinhard
Anzeige
AW: Anfang und Ende eines Bereichs – VBA
30.11.2003 18:01:14
Martin
Hallo Reinhard,

ja das geht schon in die Richtung, die ich brauche. Ich werde daran arbeiten, vielleicht bekomme ich es hin, dass der Bereich nicht vorher markiert werden muss.

Vielen Dank

Gruss,
Martin
;
Anzeige

Infobox / Tutorial

Bestimmung des Anfangs und Endes eines Bereichs in Excel mittels VBA


Schritt-für-Schritt-Anleitung

Um den Anfang und das Ende eines Bereichs in Excel mit VBA zu ermitteln, kannst du folgendes Vorgehen nutzen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".
  3. Füge den Code ein:

    • Kopiere den folgenden VBA-Code in das Modul:
    Sub MarkierungErmitteln()
       MsgBox "Erste Zelle: " & _
       Selection.Cells(1).Address(False, False) & vbLf & _
       "Letzte Zelle: " & _
       Selection.Cells(Selection.Cells.Count).Address(False, False)
    End Sub
  4. Führe das Makro aus:

    • Markiere den gewünschten Bereich in deinem Excel-Blatt und drücke F5, um das Makro auszuführen. Eine Message Box zeigt dir den Anfang und das Ende des Bereichs an.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004":

    • Dieser Fehler tritt auf, wenn der Bereich nicht korrekt ausgewählt wurde. Stelle sicher, dass du einen gültigen Bereich markiert hast, bevor du das Makro ausführst.
  • Lösung: Überprüfe die Auswahl:

    • Wenn kein Bereich ausgewählt ist, kann das Makro keine Zellen finden. Du kannst den Code anpassen, um sicherzustellen, dass eine Auswahl vorhanden ist.

Alternative Methoden

Falls du den Bereich nicht manuell markieren möchtest, kannst du den folgenden VBA-Code verwenden, um automatisch den Anfang und das Ende eines bestimmten Bereichs zu ermitteln:

Sub BereichErmitteln()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Daten") ' Ändere den Blattnamen nach Bedarf
    Dim ersterWert As String
    Dim letzterWert As String

    ersterWert = ws.Range("A1").Address(False, False)
    letzterWert = ws.Range("A1").End(xlDown).Address(False, False)

    MsgBox "Erste Zelle: " & ersterWert & vbLf & "Letzte Zelle: " & letzterWert
End Sub

Dieser Code sucht nach dem ersten Wert in der Zelle A1 und dem letzten Wert nach unten im Datenbereich.


Praktische Beispiele

Wenn du ein dynamisches Diagramm erstellen möchtest, kannst du den Code wie folgt anpassen:

With ActiveChart.Axes(xlCategory)
    .MinimumScale = "01/02/2003" ' Hier kannst du dein Anfangsdatum festlegen
    .MaximumScale = Sheets("data").Range("A2").End(xlDown).Address(False, False)
    .BaseUnit = xlDays
End With

Hierbei wird der Maximalwert der x-Achse dynamisch auf den letzten Wert des Bereichs gesetzt.


Tipps für Profis

  • Verwende modulübergreifende Variablen: Wenn du den Anfang und das Ende des Bereichs in mehreren Modulen benötigst, definiere die Variablen als Public, sodass sie in verschiedenen Subroutinen zugänglich sind.

  • Kommentare im Code: Kommentiere deine VBA-Codes gründlich, um die Nachvollziehbarkeit zu erhöhen. So kannst du später schneller Anpassungen vornehmen oder den Code für andere verständlicher machen.


FAQ: Häufige Fragen

1. Wie kann ich den Bereich dynamisch anpassen? Du kannst den Code anpassen, um die Eingaben aus einer Userform zu verwenden, wodurch der Benutzer den Anfangs- und Endwert direkt festlegen kann.

2. Kann ich auch andere Bereiche als A1:A10 verwenden? Ja, du kannst jeden gewünschten Bereich in deinem VBA-Code angeben. Achte darauf, die Zelladressen entsprechend anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige