Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1508to1512
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

Worksheet_SelectionChange

Worksheet_SelectionChange
05.08.2016 19:32:56
Michael
Guten Abend,
ohne große VBA-Kenntnisse habe ich mir ein kleines Makro gebastelt.
In einer großen Tabelle (über 300 Spalten) benötige ich ein Ereignismakro, welches bei Klick auf einen Feldnamen bestimmte Spalten ein- oder ausblendet. Das klappt auch ganz gut. Ich habe nur ein kleines Problem. Da ich über 20 Zelladressen als Target.Adress definiere, werden immer große Anpassungen der Zelladressen nötig, wenn Spalten gelöscht oder eingefügt werden:
f Target.Address = "$Y$11" Or Target.Address = "$BS$11" Or Target.Address = _
"$BX$11" Or Target.Address = "$CU$11" Or Target.Address = "$CY$11" usw.
Gibt es eine elegante Möglichkeit, die Zelladressen dynamisch zu gestalten?
Vielen Dank für Eure Unterstützung
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_SelectionChange
05.08.2016 19:46:41
Daniel
Hi
es kommt immer darauf an, gegen welches Ereignis du dich absichern willst.
wenn du beispielsweise verhindern willst, dass du den Code anpassen musst, wenn du im obigen fall die Spalte A löschst (denn dann rutschen alle Spalten um 1 nach links), könntest du folgendes tun:
lege einen Namen an, der die Zellen Y11, BS11, BX11 usw enthält.
das geht am einfachsten, wenn du alle Zellen die zusammengehören bei gedrückter STRG-Taste anklickst und dann im Namensfeld (links oben, vor der Bearbeitungszeile) einen Namen ("XXX") vergibst.
dann kannst du diese Zellen sowohl in Formlen als auch in VBA über diesen Namen "XXX" referenzieren, bspw =Summe(XXX)
Du kannst den Namen dann im Namensmanager (Menüpunkt "Formeln") weiterbearbeiten oder dort auch neue Namen erstellen.
Die Zellbezüge in den Namen passen sich an, wenn du Spalten oder Zeilen einfügst oder löschst (blöd wirds nur, wenn du eine Spalte löscht, die zu dem Namen gehört, dann wird der Name fehlerhaft)
im Code nutzt du diesen Namen dann so:
If Not Intersect(Target, Range("XXX")) is Nothing And Target.CountLarge = 1 Then

(das Target.CountLarge = 1 sicher ab, dass nur eine Zelle angelickt wurde, diese Prüfung kann im BeforeDoubleClick-Event entfallen)
Gruß Daniel
Anzeige
Toll
05.08.2016 19:58:57
Michael
Hallo Daniel,
vielen Dank für diese schöne Lösung und natürlich auch für Deine ausführlichen Kommentare.
Damit hast Dur mir viele Anpassungen erspart.
Vielen Dank und einen schönen Abend noch
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige