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

VBA - abhängige Drop Down Liste Werte ändern

VBA - abhängige Drop Down Liste Werte ändern
15.11.2023 12:09:12
Perris
Liebe Comunity,

Nach Langer Suche im Internet und auch hier im Forum, finde ich nicht den passenden VBA-Code um meine Vorstellung umzusetzen.

Folgende Sache.
Ich habe 2 Drop Down Listen erstellt.
Liste 1 = Obergruppe
Liste 2 = Untergruppe

wie schon öfters gelesen ändern sich die Werte von Liste 2 nicht, wenn man Liste 1 ändert. Ich habe einen Code im Internet gefunden der mir folgendes anzeigt.
Wenn ich die Liste 1 (Obergruppe) ändere, erscheint der Text "Auswählen". Das hilft mir schon mal wenn ich unabsichtlich den Wert in Liste 1 ändere. Zusätzlich habe ich über die bedingte Formatierung eingestellt, dass wenn Text "Auswählen" erscheint rot hinterlegt wird. Noch besser um zu erkennen dass etwas geändert wurde.

Das ist der Code den ich gefunden habe...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = ("$N$2") Then
Range("O2") = " Auswählen "
End If

End Sub

so wit so gut ABER...
Dieser Code bezieht sich nur auf die besagte Zelle. Ich hätte aber gerne, dass dieser Code ab Zeile 12 ebenfalls funktioniert, da die gesamte Zeile 2 (Produktware) später in Zeile 12 eingefügt wird und danach weiter automatisch in die nächste Zeile versetzt wird wenn wieder ein Produkt hinzugefügt wird.

Ich dachte ich könnte den Code selber umschreiben mit meiner Logik... aber naja.

Meine Umschreibung
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = ("$N2:$N30") Then
Range("O2:O30") = " Auswählen "
End If

End Sub

Ich hoffe ich hab das irgendwie halbwegs erklären können, sonst kommt der 2.Versuch! Danke vorab!

Mfg Mario

hier die excel Datei
https://www.herber.de/bbs/user/164296.xlsm

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - abhängige Drop Down Liste Werte ändern
15.11.2023 12:20:28
Beverly
Hi Mario,

versuche es mal so:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 14 Then
If Target.Count = 1 Then
If Not Target.Validation Is Nothing Then Target.Offset(0, 1) = " Auswählen "
End If
End If
End Sub


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
AW: VBA - abhängige Drop Down Liste Werte ändern
15.11.2023 12:34:37
Perris
WOW,

Funktionert so, wie ich es mir vorgestellt habe.

Danke dir Vielmals!!

lg Mario
AW: VBA - abhängige Drop Down Liste Werte ändern
15.11.2023 16:27:21
Luschi
Hallo Mario,

Karin's Vba-Code sieht bei mir so aus:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count = 1 Then
If VBA.Split(Target.Address(1, 1), "$", -1, vbTextCompare)(1) = "N" Then
If Not Target.Validation Is Nothing Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = " Auswählen "
Application.EnableEvents = True
End If
End If
End If
End Sub

- ohne Application.EnableEvents = False dreht die Ereignisprozedur 1 Extra-Runde
  da Target.Offset(0, 1) = " Auswählen " erneut das Worksheet_Change-Ereignis aufruft und
  kann das unerwartete Seiteneffekte hervorrufen und es dauert und dauert
- befindet sich die GKL nicht in 'N2' sondert 'NN2' dann lautet Target.Column = 14 so: Target.Column = 378
  und die große Fingerzählaktion beginnt um herauszubekommen, welcher SpaltenBuchstabe hinter 378 steckt
- so aber ändert man nur "N" gegen "NN"

Gruß von Luschi
aus klein-Paris
Anzeige
Geht auch mit Left(Target.Address, 3) = "$N$" owT
15.11.2023 16:45:19
Yal
Oder
Target.Column = Range("N1").Column

Um die Spalte-Buchstabe von 378 schnell herauszufinden, geht man im Direktbereich vom VBA-Editor und gibt
?Cells(1,378).Address
und Enter


Split mag zwar 4 Parameter annehmer zu können, aber die 2 letzten sind überflüssig:
Split(Target.Address, "$")(1) ergibt sehr zuverlässig auch die Spaltenbuchstaben.

Address liefert per Default in absoluter Form, also mit 2 "$": $N$1, $XFD$1048576, usw

VG
Yal
AW: Geht auch mit Left(Target.Address, 3) = "$N$" owT
15.11.2023 18:57:23
Luschi
Hallo Yal,

ich durfte 3 Jahre In einer Bank Vba programmieren, wobei jede Zeile Code von 1 Vba-Qualitätsmanagement-Prüfer beurteilt wurde, bevor diese Vba-Zeile überhaupt in das Testzentrum gelangte.
- Standardvorgabe: jeder optionale Parameter ist als Pflichtvorgabe anzugeben - da lernt man Vba-Demut
-Left(Target.Address, 3) ist viel zu statisch, denn wird die GKL nach Spalte 'AA' verschoben ist das Problem vorprogrammiert

Gruß von Luschi
aus klein-Paris
Anzeige
AW: Geht auch mit Left(Target.Address, 3) = "$N$"
16.11.2023 09:12:41
Yal
Hallo Luschi,

oha, das ist natürlich die harte Schule. Wenn man den Hintergrund weisst, kann man es besser nachvollziehen und auch wertschätzen. Vielen Dank für den Einblick.

VG
Yal


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige