Ji Munich,
[…]
Ich beschreibe an der Stelle deswegen mal nur was es macht…
- Schritt - aufräumen
das komplette Blatt in das die Ausgabe geschrieben wird wird
gelöscht - dafür sollen auf diese Boxen gelöscht werden (siehe
anderer Thread)
Frage: Warum löschst du das Tabellenblatt komplett?
Meiner Meinung nach müsste es ausreichen, wenn du in der Ausgabedatei in allen Tabellenblättern „Alles markieren“ und „Löschen–>Alles“ ausführst. Dann noch Spalten-Breiten und Zellen-Höhen auf Standardwerte setzen.
Beispiel-Code
Sub AusgabeTabelleAllesLoeschen()
'
' AusgabeTabelleAllesLoeschen Makro
'
Windows("www\_Munich\_Ausgabe.xls").Activate
Sheets("Control").Select
Cells.Select
Selection.EntireRow.Hidden = False
Selection.EntireColumn.Hidden = False
Selection.Clear
ActiveSheet.StandardWidth = 10
Selection.Rows.AutoFit
Range("A1").Select
End Sub
Diese Routine auf alle Tabellen in der Ausgabedatei anwenden.
Dann ist die Ausgabe-Tabelle „jungfräulich“, aber du hast den Vorteil, dass du in der Ausgabedatei für die Tabellen noch alle notwendigen Ereignis-Makros implementieren kannst.
- Schritt - dropdownauswahl generieren.
Es werden zwei Tabellenblätter miteinander verglichen - wenn
die Überschrift einer der Spalten gleich ist werden die Werte,
die in dieser Spalte stehen genommen und in das Ausgabeblatt
geschrieben - aber nur einmal - sprich doppelte Einträge
werden an der Stelle eliminiert.
z.B. könnte da stehen in welches Land man welches Produkt
verkauft hat - am Ende stehet eine Liste in dem jedes Land nur
einmal drin steht.
Lege für die Auswahlliste am Besten einen Namen fest, dann wird das Erzeugen der Kombi- oer Auswahllisten besonders einfach.
- Schritt
Es werden diese Boxen (deren Namen ich mir nie merken kann)
erstellt und weil es doch ein wenig umständlich ist diese
Boxen zu formatieren gebe ich gleich eingabe und
ausgabebereich im makro an und setze das eben. So sind meine
Boxen fertig
Code sollte etwa so aussehen:
Sub Kombiboxen()
'
' Kombiboxen Erzeugen
'
Dim Steuerelement As OLEObject
Windows("www\_Munich\_Ausgabe.xls").Activate
Sheets("Control").Select 'Blatt auf dem die CombBox erzeugt werden soll
' 1. KombiBox erzeugen
Call KombiboxErzeugen(180, 5, 100, 20, "C3", "Selektion1", False)
' 2. KombiBox erzeugen
Call KombiboxErzeugen(180, 30, 100, 20, "C4", "Selektion1", False)
ActiveWindow.ActiveCell.Activate
Windows("www\_Munich\_Steuerung.xls").Activate
End Sub
Sub KombiboxErzeugen(PosLinks As Double, PosOben As Double, Breite As Double, Hoehe As Double, Ausgabezelle As String, Auswahlliste As String, Drucken As Boolean)
'
' KombiboxErzeugen Makro
'
Dim Steuerelement As OLEObject
ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, \_
DisplayAsIcon:=False, Left:=PosLinks, Top:=PosOben, Width:=Breite, Height:=Hoehe).Select
Set Steuerelement = Selection
With Steuerelement
.LinkedCell = Ausgabezelle
.ListFillRange = Auswahlliste
.PrintObject = Drucken
End With
End Sub
um dann für den letzten Schritt zu funktionieren
- Schritt - auswählen
In den Boxen wird ein Eintrag ausgewählt, z.B. Deutschland.
Nun gibt es zwei Pivot-Tabellen, die ja eine Filterfunktion
haben und deren Filter ich nun auf Deutschland setzen will.
- Schritt - Makro starten
Das Makro soll also nun starten sobald dieser Wert der Box
sich ändert.
Das geht per Makro - aber ich kann ja keinen VBA Code per
Makro eingeben…
Wenn du meinen Tipp bezüglich des Aufräumens von Oben beherzigst, dann gibt es das Problem nicht mehr, du kannst jetzt bei Änderung der Auswahl in der KombiBox ein Makro starten. Der Code der Boxen geht beim Löschen der Boxen (warum löscht du die eigentlich?, Anpassung von Auswahlliste und LinkedCell reicht doch!) nicht verloren. Du muß nur darauf achten, das die Boxen nach dem Löschen immer in der gleichen Reihefolge erzeugt werden, damit die Zuordnung von Box und Code stimmt.
Deswegen dachte ich mit Worksheet_Change zu arbeiten…
Aber anders als bei normalen Dropdowns geht das nicht bei
diesen Boxen…
Es geschieht einfach nichts…
Das Worksheet_Change Ereignis reagiert nicht auf Wertänderungen, die durch die Änderung in einer KombiBox erzeugt werden!
[…]
Gruß
Franz