Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
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 Lösungsansatz gesucht

VBA Lösungsansatz gesucht
10.10.2022 15:44:37
Joschi
Hallo Forum.
Ich möchte ein Vergleichsprogramm erstellen, das bestimmte Teile einer Seite der aktuellen Mappe mit einer anderen Seite derselben Mappe vergleicht.
Als einzigen Lösungsansatz habe ich bisher die beiden DropDown-Listen erstellt. Dumm nur, dass ich dort im Code, an dem ich die DropDown-Liste erstelle, nicht auf das Ergebnis warten kann
Wer kann mir Verbesserungsvorschläge machen?.
Gruß Joschi

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Lösungsansatz gesucht
10.10.2022 16:19:42
Bernhard
Hi,
was soll denn das Ergebnis deines Vergleichs sein?
Welche Dropdownlisten und was hast du damit vor?
Und muss es VBA sein Order geht auch zum Beispiel Power Query oder eine Formellösung?
Das wären mal meine Fragen zu diesem Thema.
Bei VBA können dir sicher die Profis hier weiterhelfen genauso wie mit den anderen Möglichkeiten.
Gruß
Bernhard
AW: VBA Lösungsansatz gesucht
10.10.2022 16:33:00
Joschi
Hallo Bernhard.
VBA habe ich gewählt, weil das die einzige Ecke ist, mit der ich etwas Erfahrung habe.
Ich will Doch keine Komplettlösung. War denn meine Frage so schwer zu verstehen: Ich möchte an einer Stelle den Namen eines Tabellenblattes, das der Anwender aus einer Liste ausgewählt hat. Ein bestimmter Namen (der aktuelle, in dem letztlich später auch das Ergebnis steht) ist dabei reserviert. Bei der Auswahl des zweiten Blattes ist zusätzlich das zuvor ausgewählt ebenfalls ausgeklammert.
Mehr als diese Informationen brauche ich nicht.
Gruß Joschi
Anzeige
AW: VBA Lösungsansatz gesucht
10.10.2022 18:01:18
ralf_b
...mit der ich etwas Erfahrung habe.
und die reicht nicht aus sich den Code für ne for-schleife über alle Worksheets zu bauen? Na dann brauchst du sehr wohl eine Komplettlösung.
Wobei du die schon längst hättest, wenn du hier ne Beispieldatei mit deinen beiden Dropdowns gezeigt hättest.
Aber bitteschön behaupte ruhig weiter das du hier nur einen Tip benötigst. Das glaubt dir eh Keiner.
AW: VBA Lösungsansatz gesucht
10.10.2022 19:10:23
Joschi
Doch. Meine Erfahrung reicht aus, um eine DropDown-Liste aus den Tabellen-Namen zu erstellen.
Statt der Lösung mit der DropDown-Liste werden ich jetzt den Anwender bei jedem Tabellen-Namen fragen: möchtest Du die auswählen?
Ich hoffe noch immer darauf, das jemand mit Durchblick auf meine Frage antwortet.
Anzeige
AW: VBA Lösungsansatz gesucht
10.10.2022 19:30:50
ralf_b
Wir hoffen Alle auf durchblick-bringende Erklärungen.
Was ist denn nun dein Problem bei der Umsetzung?
Die Schleife zum Füllen der Dropdowns ist es nicht. Was denn dann?
Im Übrigen: mir ist es schnuppe ob du dem User jeden Blattnamen vor die Nase hältst.
Das gegenseitige Ausklammern der Blattnamen machst du entweder beim Füllen oder vor dem Vergleich.
wer soll das verstehen? Ich nicht. owT
10.10.2022 18:44:59
Uduuh
Bevor es eskaliert...
10.10.2022 23:12:57
Yal
Das Problem liegt wohl daran, dass man entdecken muss, dass was Dropdown benannt wird eigentlich Combobox in VBA heissen. Von da an ist es ein leichtes Spiel danach zu googeln.

Sub test()
Dim W As Worksheet
Dim DD As ComboBox 'Dropdown heissen ComboBox
Set DD = ThisWorkbook.Worksheets("Tabelle1").Shapes("Dropdown 1").OLEFormat.Object
DD.Clear
For Each W In ThisWorkbook.Worksheets
DD.AddItem W.Name
Next
End Sub
Nicht desto trotz, wenn potentielle Helfer Schwierigkeit zeigen, die Problemstellung zu verstehen, ist es gut geraten, seine eigene Darstellung des Problems unter die Lupe zu nehmen und ein Tee zu trinken. Ich meine, wer möchte hier eine Lösung haben?
VG
Yal
Anzeige
AW: Bevor es gepostet wird...
10.10.2022 23:19:18
Yal
..sollte man auch sein eigenen Code testen.
Neue Version:

Sub test()
Dim W As Worksheet
Dim DD 'As ComboBox 'Dropdown heissen ComboBox
Set DD = ThisWorkbook.Worksheets("Tabelle1").Shapes("Dropdown 1").OLEFormat.Object
Do While DD.ListCount > 0
DD.RemoveItem (1)
Loop
For Each W In ThisWorkbook.Worksheets
DD.AddItem W.Name
Next
End Sub
Es gibt übrigens 2 Arten von Steuerelemente: Formularsteuerelement und ActiveX-Steuerelemente. Das Coding passt zu einem Formularelement.
VG
Yal
AW: Bevor es eskaliert...
11.10.2022 09:52:41
Joschi
Hallo Yal.
Danke für Deine Antwort.
Unter dem Begriff "DropDown" habe ich folgenden Code im Internet gefunden:
https://www.automateexcel.com/de/vba/dropdown-liste-datenueberpruefung/
'Range("A2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
'Formula1:="Orange,Apfel,Mango,Birne,Pfirsich"
Der Code hat auch so funktioniert, wie erwartet. Über den Worksheet_Change-Event wurde dann die Eingabe sichtbar. Allerdings wurde kein weiterere Code aktiviert. Für meine Belange hätte nun eine zweite Liste erstellt werden müssen, und - nachdem dessen Entscheidung vorgelegen hat, die Verarbeitung fortgesetzt bzw. gestartet werden. Das war mein Problem.
Soviel zu dem Begriff,
Deinen Code habe ich probiert. Allerdings erhalte ich den Fehlercode 80070057 bei folgendem Befehl:
Set DD = ThisWorkbook.Worksheets("Tabelle1").Shapes("Dropdown 1").OLEFormat.Object
Eine Tabelle mit dem Namen "Tabelle1" gibt es.
Anzeige
Jetzt wissen wir wenigstens ...
11.10.2022 10:31:12
Rudi
Hallo,
... was du unter einem DropDown verstehst.
Gruß
Rudi
AW: Nachfrage.
11.10.2022 12:16:40
GerdL
Arbeitest du mit einer Gültigkeitsliste, Joschi?
Falls ja: Reicht dir eine einheitliche Zweite?
Gruß Gerd
AW: Nachfrage.
11.10.2022 12:35:55
Joschi
Hallo Gerd.
Die Antwort auf Deine Frage steht in meiner Antwort von heute 09:52.
Hier nochmals:
'Range("A2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
'Formula1:="Orange,Apfel,Mango,Birne,Pfirsich"
AW: Nachfrage.
11.10.2022 13:38:14
GerdL
Hallo Joschi,
irgendwie ist es müßig, wenn du auf zwei geschlossene Fragen nicht direkt antworten kannst.
Gruß Gerd
AW: VBA Lösungsansatz gesucht
11.10.2022 14:16:31
Rudi
Hallo,
in DieseArbeitsmappe:

Private Sub Workbook_Open()
Dim vntOUT(), i As Integer, wks As Worksheet
ReDim vntOUT(1 To Worksheets.Count - 1)
For Each wks In Worksheets
If Not wks Is Sheets("Ergebnis") Then     'anpassen
i = i + 1
vntOUT(i) = wks.Name
End If
Next
With Sheets("Ergebnis")          'anpassen
.Range("A2:B2").ClearContents
.Range("A2").Activate
.Range("B2").Validation.Delete
With .Range("A2").Validation
.Delete
.Add _
Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Formula1:=Join(vntOUT, ",")
End With
End With
End Sub
ins Modul deines Ergebnisblatts:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim vntOUT(), i As Integer, wks As Worksheet
ReDim vntOUT(1 To Worksheets.Count - 2)
If Target.Address = "$A$2" Then
For Each wks In Worksheets
If Not wks Is Me And wks.Name  Range("A2") Then
i = i + 1
vntOUT(i) = wks.Name
End If
Next
With Tabelle1.Range("B2")
If .Value = Range("A2").Value Then .ClearContents
.Activate
With .Validation
.Delete
.Add _
Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Formula1:=Join(vntOUT, ",")
End With
End With
End If
End Sub
Die Auswahlen werden in A2 und B2 eingefügt.
Gruß
Rudi
Anzeige
AW: VBA Lösungsansatz gesucht
11.10.2022 17:57:53
Joschi
Hallo Rudi,
Vielen Dank für Deinen Code, den ich gerade probiert habe.
Er nutzt dieselbe Technik für den "DropDown", die ich in meiner Lösung auch verwendet habe; lediglich die Ermittlung der Blatt-Namen ist anders.
Bei der Ausführung erhielt ich einen Fehler 1004, Das habe ich dadurch behoben, dass ich das entspechende Blatt ".Selected" habe; war kein Problem.
In der Worksheet_Change-Routine wird eine 2. "DropDown"-Liste aufgemacht. Super. Und das zuvor ausgewählte Blatt fehlt - so wie erwartet. Gratulation.
Den Ablauf habe ich mir allerdings anders vorgestellt: Nach dem Start der entsprechenden Routine werden nacheinander die beiden Blatt-Namen angefordert. Sind beide eingegeben, wird die Routine mit dem geplanten Vergleich fortgeführt.
In der aktuellen Version wird die Start-Prozedur, nachdem die 1. Auswahlliste generiert wurde, beendet.
Die Auswahl über die Drop-Down-Liste erfolgt völlig unkontrolliert. Und nachdem der 2. Blatt-Namen festgelegt wurde. muss der eigentliche Vergleich gestartet werden.
Ich werde auf der Basis Deines Codes die erforderlichen Aktionen in 3 sichtbaren Schritten durchführen:
1. Festlegung des ersten Blattes. Erst wenn dieser Schritt erfolgt ist, kann der 2. Schritt gestartet werden.
2. Festlegung des zweiten Blattes.
3. Eigentliche geplante Verarbeitung
Für mich ist dieses Thema damit erledigt.
Gruß Joschi.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige