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

Kann mir da jemand helfen?
thx
Sub a()
Debug.Print Selection.Address
End Sub
Schau's Dir mal an.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? Range("B3:B10").Select
With Selection.Interior
.Color = 65535
End With
Range(Debug.Print Selection(1).Address:Debug.Print Selection(.Cells.Count).Address).Select
With Selection.Interior
.Color = 65535
End With
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.Sub b()
With Selection
.Interior.Color = 65535
End With
End Sub
Da wüsste ich jetzt nicht, was da bei Dir nicht funktioniert. With Selection.Interior
.Color = 65535
End With
a = Chr$(Selection.Column + 64): b = Selection.Row
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUMME(" & a & b & ":" & a & "$" & b & ")/SUMME(" & a & "$" & b & ":" & a & "$999)
Selection(Selection.Cells.Count)
gibt Dir Zugriff auf die letzte Zelle in einer Auswahl.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 & ")
Markiere den gewünschten Bereich in deinem Excel-Dokument.
Öffne den VBA-Editor mit ALT + F11
.
Erstelle ein neues Modul über Einfügen > Modul
.
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
Führe das Makro aus und überprüfe das "Direktfenster" (Strg + G), um die Ausgaben zu sehen.
Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt."
Fehler: "Auswahl ist leer."
Wenn du keine VBA-Makros verwenden möchtest, kannst du die Adresse des markierten Bereichs auch direkt in eine Zelle ausgeben:
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.
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
Farbe des markierten Bereichs ändern:
Sub ChangeColorOfSelectedRange()
With Selection.Interior
.Color = 65535 ' Gelb
End With
End Sub
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.Debug.Print
, um Werte im Direktfenster zu überprüfen, während du an deinem Code arbeitest.ActiveCell.Value = Selection.Address
verwenden.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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen