Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
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

ComboBox Makro per Call aufrufen

ComboBox Makro per Call aufrufen
13.03.2019 18:18:09
Chris
Hallo zusammen,
ich habe eine ComboBox in ein Tabellenblatt eingefügt und folgendes Makro hinterlegt:
Private Sub ComboBox1_Change()
Dim rZelle  As Range
Worksheets("Cockpit").Activate
Do While ComboBox1.ListCount > 0
ComboBox1.RemoveItem (0)
Loop
With ComboBox1
For Each rZelle In ThisWorkbook.Worksheets("Ablage").Range("A3:A300")
If Trim(rZelle.Value)  "" Then
.AddItem rZelle.Value
End If
Next rZelle
End With
End Sub

Das Makro bewirkt, dass Werte aus einem Bereich ohne Leerzeilen im Drop-Down der Combobox angezeigt werden. Nun möchte ich das Makro in ein weiteres integrieren, damit sich die Liste automatisch aktualisiert, wenn ein neuer Wert in die Quelle geschrieben wird.
Ich habe versucht das Makro per "Call" auzurufen. Dafür habe ich es in das Modul 1 übernommen, wo auch das Makro steht, welches per Call das obenstehende aufrufen soll.
Wenn ich nun das übergeordnete Makro aufrufe, kommt die Fehlermeldung "Object required" an der Stelle "Do While...". Da meine VBA Künste mehr als bescheiden sind, verstehe ich das Problem einfach nicht. Ich dachte erst es läge daran, dass ich das "Option Explicit" vergessen habe aber dann möchte er die ComboBox als Variable definiert haben.
Warum kann ich das Makro problemfrei so ausführen, bekomme aber einen Fehler, wenn es als Call aufgerufen werden soll?
Vielen Dank für Eure Hilfe und Erklärungen! Bis jetzt habe ich noch immer etwas hier gelernt ;-)

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox Makro per Call aufrufen
13.03.2019 18:35:46
Beverly
Hi Chris,
wenn ich das richtig sehe, geht das nur, wenn sich das aufrufende Makro im selben Objekt (also ebenfalls im Codemodul des Tabellenblattes) befindet.


AW: ComboBox Makro per Call aufrufen
13.03.2019 18:40:36
Chris
Hi Karin,
beide Makros befinden sich im selben Modul.
Es scheiter auch nicht am Call Befehl selbst sondern der Compiler hängt sich dann im zweiten, oben aufgeführten Makro mit Beschriebnem Fehler erst auf.
Gruß
Chris
AW: ComboBox Makro per Call aufrufen
13.03.2019 18:45:53
ChrisL
Hi Chris
Fehlende Referenzierung der ComboBox zum Tabellenblatt.
ungetestet...
Private Sub ComboBox1_Change()
Call CBneuLaden
End Sub
Sub CBneuLaden()
Dim rZelle As Range
With ThisWorkbook.Worksheets("Ablage")
.ComboBox1.Clear
For Each rZelle In .Range("A3:A300").SpecialCells(xlCellTypeConstants)
.ComboBox1.AddItem rZelle.Value
Next rZelle
End With
End Sub
cu
Chris
AW: ComboBox Makro per Call aufrufen
13.03.2019 18:46:40
ChrisL
Code 1: ins Modul der Tabelle
Code 2: in ein Standardmodul
AW: ComboBox Makro per Call aufrufen
14.03.2019 09:20:51
Chris
Hi Chris,
danke erstmal für Deine Hilfe, ich habe nun Code 1 im selben Modul wie das Makro, welches das hier beschriebene ausführen soll.
Den zweiten Code habe ich in das Tabellenblatt eingefügt, in welchem die Combobox ist.
Die Fehlermeldung lautet nun, dass "Suc CBNeuLaden ()" nicht definiert sei. Packe ich beide Codes in das Modul 1 (also zum "OBer"-Makro, dass heißt es "Object doesn't support this property or method".
Ich verstehe einfach nicht, warum ich ein Makro so ausführen kann, es bei einem Call aber zum Fehler kommt.
Gruß
Chris
Anzeige
AW: ComboBox Makro per Call aufrufen
14.03.2019 09:42:44
ChrisL
Code 1: ins Modul der Tabelle
Code 2: in ein Standardmodul
Ansonsten Beispieldatei posten.
AW: ComboBox Makro per Call aufrufen
14.03.2019 09:44:22
Beverly
Hi Chris,
meine Beispielmappe hast du dir angesehen?


AW: ComboBox Makro per Call aufrufen
14.03.2019 09:58:06
Chris
Ja, die Beispielmappe habe ich mir angesehen und auch gesehen, dass es dort gut funktioniert.
Nur leider funktioniert es bei mir trotzdem nicht.
Eventuell mach ich ja immer noch etwas falsch. Ich schaffe es gerade nicht eine Beispieldatei aufzubauen aber ich versuche das Problem nochmal klarer zu beschreiben.
Ich habe in Tabellenblatt 1 eine Tabelle, welche per Makro kopiert und darunter als Text eingefügt wird. Außerdem wird ein Datum in Tabellenblatt 2 geschrieben.
Die Combobox befindet sich in Tabellenblatt 3 und stellt eine Liste der Daten in Tabellenblatt 2 dar.
Wenn ich nun das Makro in Tabellenblatt 1 auslöse, so läuft es problemlos durch. Löse ich danach das Makro für die ComboBox in Tabellenblatt 3 aus, so läuft das auch problemlos durch und lädt mir die neuste Liste in Tabellenblatt 2.
Wenn ich jedoch versuche mit dem Makro in Tabellenblatt 1 per Call-Befehl das ComboBox-Makro aufzuführen, so kommen die beschreibenen Fehlermeldungen. Ich verstehe auch nicht den Unterschied zur Beispielmappe. Ich poste hier nochmal beide Makros, welche Beide in Modul 1 im VBA stehen.
Sub TabelleKopieren()
Dim Wohin As Range
With Worksheets("Datengrundlage (3)")
With .Range("C" & .Rows.Count).End(xlUp).Offset(6, 0)
.NumberFormat = "@"
.Font.Size = 18
.Font.Bold = True
.Value = Format(Date, "DD.MM.YYYY")
End With
.Range("C3:EH58").Copy 'Destination:=.Range("C" & .Rows.Count).End(xlUp).Offset(1, 0)
.Range("C" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
.Range("C" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End With
With Worksheets("Ablage")
Set Wohin = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0)
Wohin.Value = Format(Date, "DD.MM.YYYY")
End With
Application.CutCopyMode = False
Call ComboBox1_Change
Worksheets("Datengrundlage (3)").Activate
Range("A1").Select
End Sub

Private Sub ComboBox1_Change()
Dim rZelle  As Range
Worksheets("Cockpit").Activate
Do While ComboBox1.ListCount > 0
ComboBox1.RemoveItem (0)
Loop
With ComboBox1
For Each rZelle In ThisWorkbook.Worksheets("Ablage").Range("A3:A300")
If Trim(rZelle.Value)  "" Then
.AddItem rZelle.Value
End If
Next rZelle
End With
End Sub
Danke Euch!
Anzeige
Wo befindet sich deine Sub...
14.03.2019 10:05:29
Beverly
...TabelleKopieren() - ich nehme an in einem Standardmodul (allgemeinen Modul)? Lösche sie dort und füge sie ins Codemodul des Tabellenblattes ein, in dem sich sie ComboBox befindet - so wie du das in meinem hochgeladenen Beispiel sehen kannst.


AW: Wo befindet sich deine Sub...
14.03.2019 11:07:00
Chris
Okay, so klappt es!
Einzig braucht das Makro nun gefühlt eine Ewigkeit und am Ende kommt eine Fehlerbox mit einem roten Kreuz und dem Fehler 400. Was kann das sein?
Kannst Du mir bitte auch erklären, warum es funktioniert, wenn ich das übergeordnete Makro in das Tabellenblatt mit der ComboBox einfüge, aber nicht, wenn ich das ComboBox-Makro in das allgemeine Modul zu dem übergeordneten Makro einfüge? Ich würde das gerne für die Zukunft verstehen.
Dank und Gruß
Chris
Anzeige
AW: Wo befindet sich deine Sub...
14.03.2019 14:40:47
Beverly
Du müsstest schon mal posten, was der Debugger genau sagt - die Fehlernummer kann vieles bedeuten.


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige