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

Die Liste einer ComboBox in Variable speichern?

Die Liste einer ComboBox in Variable speichern?
05.03.2009 18:30:44
toni6@gmx.at
Ich habe folgendes Problem, welches ich nicht ganz nachfolziehen kann.
Habe ein Makro, welches mir aus eine Exceldatei bei erfüllen eines Wertes eine bestimmte Zeile löschen soll (Soweit Sogut)
Nur das Problem, sobald das Makro bei
Selection.Delete Shift:=xl
angekommen ist, hüft es automatisch zum Makro für die Combobox3 (hierüber wird der Wert ausgesucht, welcher aus der am Anfang genannten datei gelöscht wird).
Und das komische, obwohl ich bei dem Makro bei der Combobox auf die Hauptdatei Lagerverwaltung.xls verweise, bleibt es bei der anderen Datei, wodurch ich natürlich einen Fehler bekomme. (Wieso befolgt das Makro nicht den Befehl, das es auf die Lagerverwaltungsdatei hüpfen soll?)
Dies ist das makro, welches die Zeile auf der Datei Vorgabe.xls löschen soll
If zeileanli >= 0 Then
VorgabeName = "Vorgabe.xls"
Windows(VorgabeName).Activate
'Aus Liste SollAnlieferungen in dieser Tabelle entfernen, wenn derAnlieferer gespeichert war
löschz1 = zeileanli + 95
löschz2 = löschz1 & ":" & löschz1
Rows(löschz2).Select
Selection.Delete Shift:=xl
'Speichern
ActiveWorkbook.Save
End If
Sobald das Makro aber bei "Selection.Delete Shift:=xl" ankommt (der Befehl wird zwar noch ausgeführt), hüpft es zu dem Maro für die ComboBox3:

Private Sub ComboBox3_Change()
'Für Eingabe Firma
VorgabeName = "Vorgabe.xls"
Windows("Lagerplatzverwaltung.xls").Activate 'Obwohl hier der Befehl zum wächseln der Datei  _
steht, bleibt das Makro bei Vorgabe.xls
Sheets("Formel").Select 'Hier bekomme ich schon den Fehler, da es dieses Feld in Vorgabe.xls  _
nicht gibt
Range("C65") = ComboBox3
'Windows(VorgabeName).Activate
ZeileAnl = ComboBox3.ListIndex
ZeileAnl1 = ZeileAnl + 95
'Soll Karton in Textbox2 eintragen
Kartsoll = "H" & ZeileAnl1
Kartsoll1 = Range(Kartsoll).Value
'Soll Gesammtgewicht in Textbox3 eintragen
Gesamtge = "I" & ZeileAnl1
Gesamtge1 = Range(Gesamtge).Value
'Soll Datum in Textbox4 eintragen
Datuso = "F" & ZeileAnl1
Datuso1 = Range(Datuso).Value
'Windows("Lagerplatzverwaltung.xls").Activate
Me.TextBox4.Value = Datuso1
Me.TextBox2.Value = Kartsoll1
Me.TextBox3.Value = Gesamtge1
Windows("Lagerplatzverwaltung.xls").Activate
End Sub


Es währe vieleicht eine Lösung, wenn ich vor dem löschbefehl, die Liste in einer Variable gebe, und nach dem löschen der BomboBox wieder zuweise.
Ich habe es mit diesem Befehl probiert, aber da bekomme ich immer einen Fehler:
(Laufzeitfehler 1004
Die OLEObjects-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden.)
Dim Merker As String
If zeileanli >= 0 Then
VorgabeName = "Vorgabe.xls"
Windows(VorgabeName).Activate
'Aus Liste SollAnlieferungen in dieser Tabelle entfernen, wenn derAnlieferer gespeichert war
löschz1 = zeileanli + 95
löschz2 = löschz1 & ":" & löschz1
Rows(löschz2).Select
Merker = ActiveSheet.OLEObjects("ComboBox1").ListFillRange
Selection.Delete Shift:=xl
ActiveSheet.OLEObjects("ComboBox1").ListFillRange = Merker
'Speichern
ActiveWorkbook.Save
End if
Ich hoffe, ihr könnt mir hier weiterhelfen.
Und hoffentlich auch einen Grund nennen, weshalb das Makro (wenn es vor dem löschbefehl ) zum ComboBox Makro springt, den Befehl "Windows("Lagerplatzverwaltung.xls").Activate"
ignoriert.
Danke an alle.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Die Liste einer ComboBox in Variable speichern?
05.03.2009 18:44:55
Ramses
Hallo
ich gehe mal davon aus, dass die Combobox in einer UF ist.
solange die UF im Modus "ShowModal = True" geöffnet ist, kann der Focus nicht auf ein anderer Object gesetzt werden.
Das ist aber auch gar nicht nötig, wenn du deine Anweisungen OHNE Select und Activate durchfürhst.
In 99.99% auch nicht nötig
Du kannst ds z.B so schrieben
Windows("Lagerplatzverwaltung.xls").Sheets("Formel").Range("C65") = Combobox3.Value
oder auch
With Windows("Lagerplatzverwaltung.xls").Sheets("Formel")
.Range("C65") = Combobox3.Value
End with
schreiben. Der Vorteil der zweiten Schreibweise öffnet sich hier nicht gleich, aber so sicher
With Windows("Lagerplatzverwaltung.xls").Sheets("Formel")
.Range("C65") = Combobox3.Value
.Range("C66") = Combobox3.Value
.Printarea = "A1:B10"
....usw.
End with
Gruss Rainer
Anzeige
Funktioniert auch nicht
06.03.2009 18:26:28
toni6@gmx.at
Hallo Rainer.
Ich habe deinen Tip probiert, und den Befehl wie folgt umgeändert:
Windows("Lagerplatzverwaltung.xls").Sheets("Formel").Range("C65") = Combobox3.Value
Jetzt bekomme ich aber gleich beim anklicken der ComboBox eine Fehlermeldung, welche ich gar nicht debuggen kann, sondern das Makro wird automatisch beendet.
Was mache ich da falsch?
Mfg Anton

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige