Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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 Tabellenübergreifende Zellen-Dropdown

VBA Tabellenübergreifende Zellen-Dropdown
02.01.2017 16:55:15
Nils
Guten Tag liebe VBA-Spezialisten
Ich erstelle für meine Lehrbude ein Excel-File, das zum Disponieren von Container genutzt werden soll (Logistik). Momentan findet bei uns das Disponieren zu steinzeitähnlichen Verhältnissen statt ,und ich bin dran die Arbeitsabläufe zu automatisieren und zu vereinfachen. Nun, ich bin mit meinem VBA-Wissen ein bisschen an meine Grenzen gestoßen aber ich denke, hoffe und weiß, dass ihr mir hier sicher weiterhelfen könnt.
Ich suche nach einer VBA-Komplettlösung für mein Problem.
Der Ablauf müsste folgender sein:
1. Der User (DAU) trägt neue Daten im Tabellenblatt "1-14 Tage" ein.
2. Nachdem wählt der User im Tabellenblatt "Call Off" in Spalte B, die Abrufnummer per Zellendropdown aus. Hier sollen nur die Abrufnummern im Zellendropdown erscheinen, die noch nicht ausgewählt wurden. Anschließend soll im Tabellenblatt "1-14 Tage" die jeweilige Zeile verschwinden. Am besten denke ich, dass hier die Zeile kopiert wird und anschließend ausgeblendet wird und nicht verschoben oder gefiltert wird oder liege ich hier falsch?
3. Anschließend sollen im Tabellenblatt "Disposition" in Spalte G nur die Abrufnummern im Zellendropdown zur Auswahl stehen, die im Tabellenblatt "Call Off" vorhanden sind. Ich denke auch wieder, dass hier das Ausblenden der Zeilen am besten ist.
Das Excel-File ist hier zum downloaden: https://www.dropbox.com/s/r51eqs0o8zrrcph/Seefrachtdispo%20Beta%200.0.1.xlsx?dl=0
Ich habe einige Forenbeiträge gelesen, fand aber meine Problemstellung nicht. Am ehesten kommt dieser Beitrag an meine Problemstellung heran: https://www.herber.de/forum/archiv/1012to1016/1012343_Gueltigkeit_Liste_und_Formel_kombinierbar.html und der Lösungsansatz von Luschi https://www.herber.de/bbs/user/55681.xls
Vielen Dank für eure Lösungsvorschläge.
Grüsse
Nils

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Tabellenübergreifende Zellen-Dropdown
03.01.2017 18:24:41
fcs
Hallo Nils,
Komplett-Lösungen gibt es selten umsonst.
Warum werden sooft Lösungen für DAU gewünscht?
Ist Mitarbeiter-Schulung ein Fremdwort?
Wenn DAU-Lösung, dann kommst du um die Eingabe/Auswahl von Daten via Userformen und die Verwendung von Userformen mit entsprechenden Prüfungne auf Daten-Konsistenz und die Verwendung von Blattschutz nicht herum.
2. Nachdem wählt der User im Tabellenblatt "Call Off" in Spalte B, die Abrufnummer per Zellendropdown aus. Hier sollen nur die Abrufnummern im Zellendropdown erscheinen, die noch nicht ausgewählt wurden.
Das kann man lösen, indem auf einem separaten Blatt nach der Eingabe im Blatt "1-14 Tage" bzw. nach der Auswahl einer Abrufnummer in "Call Off" die Auswahlliste dynamisch anpasst. Für den Zellbereich mit der Auswahlliste sollte man mit einem Namen arbeiten, den man für die Dropdownauswahl verwendet.
Anschließend soll im Tabellenblatt "1-14 Tage" die jeweilige Zeile verschwinden. Am besten denke ich, dass hier die Zeile kopiert wird und anschließend ausgeblendet wird und nicht verschoben oder gefiltert wird oder liege ich hier falsch?
Werden die Daten in "1-14 Tage" nach dem Kopieren nach "Call Off" noch benötigt?
JA --&gt Datensatz in separater Spalte markieren und ggf. ausblenden (z.B via Autofilter)
NeIN --&gt Datensatz löschen
3. Anschließend sollen im Tabellenblatt "Disposition" in Spalte G nur die Abrufnummern im Zellendropdown zur Auswahl stehen, die im Tabellenblatt "Call Off" vorhanden sind. Ich denke auch wieder, dass hier das Ausblenden der Zeilen am besten ist.

Ähnliche Vorgehensweise wie bei 2.
Das Excel-File ist hier zum downloaden: https://www.dropbox.com/s/r51eqs0o8zrrcph/Seefrachtdispo%20Beta%200.0.1.xlsx?dl=0
Lade die Datei hier hoch - specke sie ggf. vorher ab.
LG
Franz
Anzeige
AW: VBA Tabellenübergreifende Zellen-Dropdown
04.01.2017 10:12:33
Nils
Hallo Franz
Vielen Dank für Deine Antwort.
Weiterbildung und Schulungen sind uns ganz sicher kein Fremdwort :) Der Grund warum hier eine DAU-Lösung zum Zug kommen soll ist, dass diese Liste von ca. 10-15 Personen verwendet werden soll. Jede davon trägt wieder neue Daten ein und entnimmt wieder Daten. Unter diesen 10-15 Personen gibt es natürlich Leute, die nicht ganz so geübt mit Excel sind ,und deshalb möchte ich die Handhabung so einfach wie möglich gestalten.
Das kann man lösen, indem auf einem separaten Blatt nach der Eingabe im Blatt "1-14 Tage" bzw. nach der Auswahl einer Abrufnummer in "Call Off" die Auswahlliste dynamisch anpasst. Für den Zellbereich mit der Auswahlliste sollte man mit einem Namen arbeiten, den man für die Dropdownauswahl verwendet.
Das finde ich eine sehr gute Idee, die ich sicherlich einbauen werde!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rg1 As Range, rg2 As Range, rg3 As Range, rg4 As Range, _
col As New Collection, ok As Boolean, _
obj1 As Variant, s0 As String, s1 As String, s2 As String
'alle Zellen mit einer Gültigkeitsliste
'die Gültigkeitsliste muß vorher in diesen Zellen nicht definiert werden!!!
s1 = "D3,F3,H3,J3,L3,N3,D14,F14,H14,J14,L14,N14"
If Not Application.Intersect(Target, ActiveSheet.Range(s1)) Is Nothing Then
'den Name Liste_01 in ein Zellbereich umwandeln
Set rg1 = ThisWorkbook.Names("Liste_01").RefersToRange
'Target-Adresse aus s1 löschen
s2 = Replace(s1, Target.Address(False, False), "", 1, -1, vbTextCompare)
If Left(s2, 1) = "," Then s2 = Mid(s2, 2)
If Right(s2, 1) = "," Then s2 = Left(s2, Len(s2) - 1)
s2 = Replace(s2, ",,", ",", 1, -1, vbTextCompare)
On Error Resume Next
'alle Zellen von Liste_01 durchlaufen
For Each rg2 In rg1
'wenn die Zelle nicht leer ist
If ""  Trim(rg2) Then
'Zellinhalt in eine Sammlung (engl. Collection) schreiben
'dabei werden mehrfach vorkommende Werte ignoriert
ok = True
'MsgBox s2
'alle Zellen mit Gültigkeitsliste (s2) durchlaufen
Set rg3 = ActiveSheet.Range(s2)
For Each rg4 In rg3
If rg4.Value = rg2.Value Then
'ein Wert aus Liste_01 ist in einer Gültigkeitsliste schon vorhanden
'deshalb Wert nicht in die Collection schreiben
ok = False
Exit For
End If
Next rg4
If ok Then
'kein Wert in irgendeiner Gültigkeitsliste schon vorhanden
col.Add key:=CStr(rg2.Value), Item:=rg2.Value
End If
End If
Next rg2
On Error GoTo 0
s0 = ""
'Inhalt der Collection in einen String (Text-Variable) schreiben
For Each obj1 In col
s0 = s0 & "," & obj1
Next obj1
s0 = Mid(s0, 2)
'Gültigkeit (engl. Validation) erstellen
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=s0
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'alle Objektvariablen zurücksetzen
Set rg1 = Nothing
Set rg2 = Nothing
Set col = Nothing
End If
End Sub
Dieser Code wurde von Luschi verwendet. https://www.herber.de/bbs/user/55681.xls
Mein Problem ist es nun, dass die Auswahl der Zellendropdowns über die Tabellenblätter "1-14 Tage", "Call Off" und Disposition zu erweitern. Der Code müsste so angepasst werden, dass in den Zellendropdowns im Tabellenblatt "Call Off" nur die Abrufnummern zur Auswahl stehen, die im Tabellenblatt "1-14 Tage" noch nicht verwendet wurden und dass in den Zellendropdowns im Tabellenblatt "Disposition" nur die Abrufnummern zur Auswahl stehen, die im Tabellenblatt "Call Off" noch nicht verwendet wurden.
Ich hoffe, dass ich mein Problem verständlich geschildert habe.
P.S. Dass Komplettlösungen nur selten umsonst sind ist mir natürlich auch bewusst :)
Grüsse
Nils
Anzeige
AW: VBA Tabellenübergreifende Zellen-Dropdown
05.01.2017 08:37:34
fcs
Hallo Nils,
ich hab deine Datei mal entsprechend aufbereitet.
https://www.herber.de/bbs/user/110340.xlsm
1. Die Daten werden in Tabellen/Listen verwaltet.
Dadurch werden beim Anfügen einer Datenzeile die Formeln automatisch eingefügt.
2. Mit Klick in Zelle K1 in Blatt "1-14 Tage" bzw. "Call Off" wird nach "#NV" gefiltert.
3. Bei aktivieren der Blätter "Call Off" bzw. "Disposition" wird die zugehörige Auswahlliste für die Auftragsnummer aktualisiert. Ebenfalls wenn eine Auftragsnummer ausgewählt oder gelöscht wird.
Für 2. und 3. sind unter den Tabellenblatt-Modulen entsprecende Ereignismakros angelegt.
Gruß
Franz
Anzeige
AW: VBA Tabellenübergreifende Zellen-Dropdown
05.01.2017 10:56:15
Nils
Hallo Franz
Wow, das ist genau das wonach ich geschaut habe! Vielen herzlichen Dank für deine Hilfe.
Grüsse
Nils

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige