Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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