Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Adresse von markierten Bereich auslesen.

Adresse von markierten Bereich auslesen.
15.03.2017 08:49:39
markierten
Hallo zusammen,
wie kann ich in Makros mit einem mit der Maus markiertem Bereich arbeiten?
Z.B. bräuchte ich die Adresse der ersten und letzten Zelle.
Ist es möglich diese in Variablen zu speichern?
Erste Zelle = B2
Letzte Zelle = B10
Userbild
Kann mir da jemand helfen?
thx
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
... mit Selection
15.03.2017 09:05:27
Michael
Hallo!
Du suchst nach "Selection" - damit kannst Du auf alle Infos des gerade markierten Blatt-Bereiches zugreifen...
Sub a()
Debug.Print Selection.Address
End Sub
Schau's Dir mal an.
LG
Michael
... na gut, erweitertes Beispiel...
15.03.2017 09:12:00
Michael
...weil ich nicht so bin:
Sub b()
With Selection
Debug.Print .Address 'Adresse Bereich
Debug.Print .Cells.Count 'Anzahl Zellen
Debug.Print Selection(1).Address 'Adresse erste Zelle
Debug.Print Selection(.Cells.Count).Address 'Adresse letzte Zelle
End With
End Sub
Klar?
LG
Michael
Anzeige
AW: ... na gut, erweitertes Beispiel...
15.03.2017 10:11:55
Tim
Ahh Klasse
Ich hätte mir das komplexer vorgestellt.
Danke für deine Beispiele.
Kannst Du mir noch verraten wie ich es in der Praxis anwende, anhand dieses Beispieles.
 Range("B3:B10").Select
With Selection.Interior
.Color = 65535
End With

Das wäre meine Logic, jedoch leider nicht die von VBA :/

Range(Debug.Print Selection(1).Address:Debug.Print Selection(.Cells.Count).Address).Select
With Selection.Interior
.Color = 65535
End With

Anzeige
AW: ... na gut, erweitertes Beispiel...
15.03.2017 10:28:10
Michael
Hallo!
Naja... bevor Du sowas machst, brauchst Du nicht mit Selection zu arbeiten:
 Range("B3:B10").Select
With Selection.Interior
.Color = 65535
End With
...denn, wenn Dir der Bereich sowieso bekannt ist, dann färbe den Bereich direkt, ohne ihn vorher zu selektieren (= unnötig):
Sub b()
With Range("B3:B10")
.Interior.Color = 65535
End With
End Sub
Mit Selection arbeitet man v.a. dann, wenn Deine Routine mit einem Bereich etwas machen soll, der manuell (von dem/der BenutzerIn) gewählt wurde, d.h. Dir also vorab nicht klar ist, um welchen Bereich es sich handelt.
Ansonsten funktioniert der von Dir gepostete Code genauso:
Sub b()
With Selection
.Interior.Color = 65535
End With
End Sub
Da wüsste ich jetzt nicht, was da bei Dir nicht funktioniert.
LG
Michael
Anzeige
AW: ... na gut, erweitertes Beispiel...
15.03.2017 10:46:19
Tim
Ich möchte dies natürlich nicht verwenden um nur die Farbe zu verändern. Das sollte nur als Beispiel dienen.
 With Selection.Interior
.Color = 65535
End With

reicht ja um die Felder Gelb zu färben.
?
15.03.2017 10:49:20
Michael
Ich möchte dies natürlich nicht verwenden um nur die Farbe zu verändern. Das sollte nur als Beispiel dienen.
reicht ja um die Felder Gelb zu färben.

Ähh... ok... hast Du jetzt noch eine Frage, oder wie?
LG
Michael
Anzeige
AW: ... na gut, erweitertes Beispiel...
15.03.2017 10:59:41
Tim
Ich gebe zu das Beispiel war ungeschickt gewählt.
Hier mal das echte Beispiel:
Ich möchte eine Bedingte Formatierung setzen.
In dem unteren Beispiel wird die Bedingte Formatierung in der Markierten Zeile gesetzt, die Rechnung geht aber bis Zeile 999. Ich möchte diesen gerne auf die letzte markierte Zelle beschränken.
a = Chr$(Selection.Column + 64): b = Selection.Row
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUMME(" & a & b & ":" & a & "$" & b & ")/SUMME(" & a & "$" & b & ":" & a & "$999)

Anzeige
AW: ... na gut, erweitertes Beispiel...
15.03.2017 11:27:23
Michael

Selection(Selection.Cells.Count)
gibt Dir Zugriff auf die letzte Zelle in einer Auswahl.
LG
Michael
DANKE
15.03.2017 11:29:44
Tim
Danke Du bist Top!
So scheint es zu funktionieren ;)
a = Chr$(Selection.Column + 64): b = Selection.Row
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUMME(" & a & b & ":" & a & "$" & b & ")/SUMME(" & a & "$" & b & ":" & a & Selection.Rows. _
Count & ")

Anzeige
Gerne! owT
15.03.2017 12:39:52
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Adresse von markierten Bereich auslesen


Schritt-für-Schritt-Anleitung

  1. Markiere den gewünschten Bereich in deinem Excel-Dokument.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Erstelle ein neues Modul über Einfügen > Modul.

  4. Füge den folgenden Code ein, um die Adresse des markierten Bereichs auszulesen:

    Sub GetSelectedRangeAddress()
       Dim firstCell As String
       Dim lastCell As String
    
       With Selection
           firstCell = .Cells(1, 1).Address ' Adresse der ersten Zelle
           lastCell = .Cells(.Cells.Count).Address ' Adresse der letzten Zelle
           Debug.Print "Erste Zelle: " & firstCell
           Debug.Print "Letzte Zelle: " & lastCell
       End With
    End Sub
  5. Führe das Makro aus und überprüfe das "Direktfenster" (Strg + G), um die Ausgaben zu sehen.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt."

    • Lösung: Stelle sicher, dass du einen Bereich markiert hast, bevor du das Makro ausführst.
  • Fehler: "Auswahl ist leer."

    • Lösung: Überprüfe, ob der markierte Bereich tatsächlich Zellen enthält.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du die Adresse des markierten Bereichs auch direkt in eine Zelle ausgeben:

  1. Wähle die Zelle, in der die Adresse angezeigt werden soll.
  2. Verwende die folgende Formel:

    =ADRESSE(ZEILE(A1);SPALTE(A1))

Ersetze A1 durch die Zelle, die du analysieren möchtest. Diese Methode gibt dir die Adresse der Zelle zurück, aber nicht der gesamten Auswahl.


Praktische Beispiele

  1. Bedingte Formatierung auf markierten Bereich anwenden:

    Sub ApplyConditionalFormatting()
       Dim rng As Range
       Set rng = Selection
       rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=100"
       With rng.FormatConditions(rng.FormatConditions.Count)
           .SetFirstPriority
           .Interior.Color = 65535 ' Gelb
       End With
    End Sub
  2. Farbe des markierten Bereichs ändern:

    Sub ChangeColorOfSelectedRange()
       With Selection.Interior
           .Color = 65535 ' Gelb
       End With
    End Sub

Tipps für Profis

  • Nutze Selection nur, wenn der Benutzer einen Bereich manuell auswählt. Wenn der Bereich bekannt ist, verwende besser Range("B3:B10"), um die Leistung zu verbessern.
  • Verwende Debug.Print, um Werte im Direktfenster zu überprüfen, während du an deinem Code arbeitest.
  • Um die Adresse eines markierten Bereichs in eine Zelle zu schreiben, kannst du ActiveCell.Value = Selection.Address verwenden.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Zellen im markierten Bereich ermitteln?
Verwende Selection.Cells.Count, um die Anzahl der Zellen im markierten Bereich zu erhalten.

2. Wie kann ich die Adresse eines bestimmten Teils des markierten Bereichs abrufen?
Du kannst auf bestimmte Zellen in der Auswahl zugreifen, z.B. Selection(1).Address für die erste Zelle oder Selection(Selection.Cells.Count).Address für die letzte Zelle.

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