wie kann ich den Inhalt eines Textfeldes dauerhaft und automatisch sortiert in eine Combobox bringen, wenn sich beide in unterschiedlichen Mappen befinden. Habe es schon mit AddItem und Cut/Paste versucht, aber funktioniert nicht so richtig.
in diesem Forum gibt es ein Schalter "Offen" damit geht Dein Beitrag nicht unter. Eine Wiederholung mit dem gleichen Text macht es auch nicht besser.
Gruß Hajo
Dumm nur, dass ich den Beitrag weiter unten mit "doppelt o.T." geschlossen habe :-) naja dumm gelaufen.
an Detlef...
Wie sieht denn dein bisheriger Versuch aus bzw. was läuft nicht? Was meinst du mit "dauerhaft"? Meinst du damit, dass die Daten in der Combobox auch dann noch vorhanden sein sollen, wenn du die Datei schliesst und wieder oeffnest? Ist die Datei aus der die Daten kommen geöffnet?
Jedenfalls würde ich es über eine separate Hilfstabelle (selbe Datei wie wo Combobox ist) lösen, wo die Daten aus dem Texfeld eingetragen und anschliessend sortiert, dann die Daten der Combobox gelöscht und anschliessend neu geladen werden.
Gruss
Chris
Das hast Du richtig verstanden. Mit "dauerhaft" meine ich, dass die Eintragungen aus der Comboliste nach dem Schließen erhalten bleiben und auch nicht manuell entfernt werden können. Das mit der Tabelle hatte ich mir auch schon überlegt, aber leider programmiere ich noch nicht lange mit VBA, und deshalb fehlt mir da noch das gewisse Know-How. Inbesondere das Zusammenspiel der beiden Objekte (Textbox als Lieferant und Combobox als Empfänger) in den beiden verschiedenen Mappen macht mir noch zu schaffen, da ich nicht klar trennen kann, welches Objekt welche Aufgaben bei diesem Transfer zu übernehmen hat und vor allen Dingen auch leisten kann.
Hier ein Vorschlag:
Datei 1: Enthält Textbox1 und Commandbutton1 zum Bestätigen, sowie eine versteckte Tabelle2 (2. Position).
Datei 2: Enthält Combobox1, sowie eine versteckte Tabelle2.
Mit nachstehendem Makro fügst du die Daten aus Textbox1 in die Tabelle2 der Datei 1 und sortierst die Liste anschliessend automatisch:
Private Sub CommandButton1_Click()
If TextBox1 = "" Then Exit Sub
Application.ScreenUpdating = False
'Uebertrag in Blatt 2 und anschliessendes Löschen der Textbox
Sheets(2).Cells(Sheets(2).Range("A65536").End(xlUp).Row + 1, 1) = TextBox1
TextBox1 = ""
'Blatt 2 sortieren
Sheets(2).Visible = True
Sheets(2).Select
Sheets(2).Columns("A:A").Select
Selection.Sort Key1:=Sheets(2).Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Sheets(2).Visible = False
Application.ScreenUpdating = True
End Sub
In Datei 2 machst du ein Workbook_Open Ereignis, welches die Datentabelle aus Datei 1 kopiert und anschliessend die Combobox1 mit den relevanten Daten füllt:
Private Sub Workbook_Open()
Dim LetzteZeile As Integer
Workbooks.Open FileName:="C:\WINNT\Profiles\LEUMAC\Desktop\Test.xls"
Workbooks(1).Activate
Workbooks(2).Sheets("Sheet2").Copy After:=Workbooks(1).Sheets(1)
Workbooks(2).Close
LetzteZeile = Sheets(2).Range("A65536").End(xlUp).Row
Sheets(1).ComboBox1.Clear
Sheets(1).ComboBox1.ListFillRange = "Sheet2!A2:A" & LetzteZeile
End Sub
Und dann braucht es noch ein Workbook_Before Close Ereignis, welches die Tabelle2 der Datei2 beim Schliessen löscht, damit bei erneutem Oeffnen der Datei die Liste neu kopiert werden kann und somit die Daten aktuell sind:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Sheets(2).Visible = True
Sheets(2).Delete
Application.DisplayAlerts = True
End Sub
Die Datei 1 darf beim Oeffnen der Datei 2 aber nicht durch einen anderen User in Gebrauch sein.
Gruss
Chris
danke für Deinen unfangreichen Lösungsvorschlag. Wäre ich allein nie drauf gekommen. Habe ihn an meine Bedingungen angepasst, und er läuft jetzt super.
Nochmals Danke
Detlef