Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehlerhafte Adressermittlung in Excel

Fehlerhafte Adressermittlung in Excel
18.06.2020 20:58:35
Norbert_H
Aus einer Markierung im Tabellenblatt wird anhand der Zeile und Spalte ein Datum ermittelt (Kalenderblatt).
Markierung kann sein: Vorwärts $A$1:$C$1 - Rückwärts $C$1:$A$1
oder Vorwärts $A$1, $C$1 - Rückwärts $C$1, $A$1
Dabei tritt folgendes Kuriosum auf:
Nicht zusammenhängende Zellen werden bei der Adressermittlung als fehlerhafte Adresse zurückgegeben.
Zur Kontrolle ein kleines Makro

Sub Adresse()
' Markierung liegt auf $A$1 und $C$1
Dim i As Integer
Debug.Print "Ganze Markierung                 - " & Selection.Address
Debug.Print "Letzte Markierung laut Selektion - " & Selection(Selection.Count).Address
' Nochmals Einzel über Zähler
For i = 1 To Selection.Count
Debug.Print "Markierung " & i & "                     - " & Selection(i).Address
Next
End Sub

Ergebnis:
Ganze Markierung - $A$1,$C$1 - Korrekt
Letzte Markierung laut Selektion - $A$2 - Falsch
Markierung 1 - $A$1 - Korrekt
Markierung 2 - $A$2 - Falsch
Gibt es eine Möglichkeit im markierten Bereich die kleinste Zelladresse
und die letzte Zelladresse korrekt zu ermitteln?
Im Voraus besten Dank.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlerhafte Adressermittlung in Excel
18.06.2020 21:50:29
ralf_b
es kommt auch drauf in welcher Reihenfolge markiert wurde.
Selection.count ist die zuletzt erfolgte Markierung bei getrennten Bereichen.
ich schätze du kannst das anhand der Row und Column Werte herausfinden welche die kleinste ist.
AW: Fehlerhafte Adressermittlung in Excel
18.06.2020 22:21:20
onur
"Selection.count ist die zuletzt erfolgte Markierung bei getrennten Bereichen. " ?
Was für ein Blödsinn!
AW: Fehlerhafte Adressermittlung in Excel
18.06.2020 22:22:04
onur

Sub Adresse()
Dim i As Integer
Debug.Print "Ganze Markierung                 - " & Selection.Address
Debug.Print "Letzte Markierung laut Selektion - " & Selection.Areas(Selection.Areas.Count). _
Address
For i = 1 To Selection.Areas.Count
Debug.Print "Markierung " & i & "                     - " & Selection.Areas(i).Address
Next
End Sub

Anzeige
AW: Fehlerhafte Adressermittlung in Excel
19.06.2020 00:22:19
Norbert_H
Hallo onur,
vielen Dank für deinen Lösungsansatz. Die Bereiche werden damit korrekt angezeigt.
Allerdings wird auch die Markierung $C$1,$A$1 in der markierten Reihenfolge angezeigt.
Nach mehreren Stunden basteln, bin ich auch auf eine Lösung gekommen.
Nachfolgend eine Lösung für alle mit dem gleichen Problem und vielen Dank an Alle die sich mit
einem Lösungsansatz beschäftigt haben. Mein Fehlerverursacher lag wohl daran, dass ich eine Bereichsadresse nur mit Selection anstelle von Selection.Areas abgefragt habe.
Der Vollständigkeit halber der Lösungsansatz von onur:
Selection.Areas(1).row bzw Selection.Areas(Selection.Areas.Count).column
Nachfolgend noch mein Lösungsansatz mit einem array
Sub BereichAdressen()
Dim strBereich As String
Dim myarray
strBereich = Selection.Address
Select Case True
Case Len(strBereich) - Len(Replace(strBereich, ":", "")) > 0
' Zusammenhängender Zellbereich
myarray = Split(Selection.Address, ":")
Case Len(strBereich) - Len(Replace(strBereich, ",", "")) > 0
' Bereich mit einzelnen getrennten Zellen
myarray = Split(Selection.Address, ",")
End Select
' Anmerkung : Es gibt auch noch die dritte Variante - $A$1:$C$4,$E$5:$G$8 (Mischung von  _
beidem).
' Lösungsansatz 1
MsgBox "Anfang - Zeile - " & Range(myarray(0)).Row & " - Spalte - " & Range(myarray(0)). _
Column
MsgBox "Ende   - Zeile - " & Range(myarray(1)).Row & " - Spalte - " & Range(myarray(1)). _
Column
' $A$1, $C$1 - korrekt
' $C$1, $A$1 - korrekt aber Anfang und Ende vertauscht
' $A$1:$C$1  - korrekt
' $C$1:$A$1  - korrekt
' Lösungsansatz 2
If myarray(0) > myarray(1) Then
MsgBox "Anfang - Zeile - " & Range(myarray(1)).Row & " - Spalte - " & Range(myarray(1)). _
_ column
MsgBox "Ende   - Zeile - " & Range(myarray(0)).Row & " - Spalte - " & Range(myarray(0)). _
_
Column
Else
MsgBox "Anfang - Zeile - " & Range(myarray(0)).Row & " - Spalte - " & Range(myarray(0)). _
_
Column
MsgBox "Ende   - Zeile - " & Range(myarray(1)).Row & " - Spalte - " & Range(myarray(1)). _
_
Column
End If
' Anmerkung : Dies ist nur bis zwei Elementen einfach möglich
' Die Reihenfolge der Aktivierung merkt sich Excel --> $C$1,$A$1,$G$1,$E$1
' bei komplexeren Markierung muss das array für einen Vergleich einmal komplett
' durchgelesen werden bzw. vorher sortiert werden.
End Sub
Grüße Norbert
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige