Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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

Bereich einer Zelle erkennen

Bereich einer Zelle erkennen
28.05.2018 20:12:06
Barbaraa
Hallo
Gegeben sind drei benannte Bereiche:
Bereich "Auswahl_1" von A2 bis J2,
Bereich "Auswahl_2" von A4 bis J4,
Bereich "Auswahl_3" von A6 bis J6.
Dieses Makro zur Vorbereitung, das die Bereiche erst mal festlegt. Das ist natürlich zuerst auszuführen.
Sub Vorbereitung()
With ActiveWorkbook.Names
.Add "Auswahl_1", "=Tabelle1!R2C1:R2C10"
.Add "Auswahl_2", "=Tabelle1!R4C1:R4C10"
.Add "Auswahl_3", "=Tabelle1!R6C1:R6C10"
End With
End Sub (Keine Ahnung, warum das nicht im Makro-Stil dargestellt wird. Sorry.)
Das gesuchte Makro soll prüfen, ob die beschriebene Zelle in einem dieser Bereiche steht, der mit "Auswahl_" beginnt und drunter den Namen des Bereiches schreiben.
Sicher, eine Abfrage mit jedem in Frage kommenden Bereich funktioniert wie im Beispiel unten. Aber wie kann man das vereinfachen? Immerhin sind die Folgezeilen ja gleich, abgesehen von der Bestimmung des Bereichnamens.
Hier meine "Langversion", von der ich wegkommen will.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rZelle As Range
Dim sName As String
For Each rZelle In Target
If Not Application.Intersect(rZelle, Range("Auswahl_1")) Is Nothing Then
sName = "Auswahl_"
rZelle.Offset(1, 0).Value = sName
ElseIf Not Application.Intersect(rZelle, Range("Auswahl_2")) Is Nothing Then
sName = "Auswahl_2"
rZelle.Offset(1, 0).Value = sName
ElseIf Not Application.Intersect(rZelle, Range("Auswahl_3")) Is Nothing Then
sName = "Auswahl_3"
rZelle.Offset(1, 0).Value = sName
End If
Next rZelle
End Sub
Das Ganze steht im Tabelle1-Modul.
LG, Barbara

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich einer Zelle erkennen
28.05.2018 22:29:06
Barbaraa
OK, Habe es selbst gelöst.
Ist zwar ein Schleifenmonster, aber es tut seine Dienste.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rZelle As Range
Dim nBereich As Name
For Each rZelle In Target
For Each nBereich In ActiveWorkbook.Names
If nBereich.Name Like "Auswahl_*" Then
If Not Application.Intersect(rZelle, Range(nBereich)) Is Nothing Then
rZelle.Offset(1, 0).Value = nBereich.Name
Exit For
End If
End If
Next nBereich
Next rZelle
End Sub
Alle Namen durchgehen (leider auch die in den anderen WSs, aber das kann ich aussitzen), diese auf Übereinstimmung prüfen, dann normal weiter mit Intersect.
Habe mir Anleitung von einem Beitrag in diesem Forum geholt, aus dem Jahre 2003 (hihi).
Danke für Eure Aufmerksamkeit.
Dennoch, fachdienliche Kommentare gern gesehen.
LGB
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige