Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eintrag aus Kombinationsfeld per VBA auswählen

Forumthread: Eintrag aus Kombinationsfeld per VBA auswählen

Eintrag aus Kombinationsfeld per VBA auswählen
Michael
Hallo,
ich möchte eine xls Datei per VBA öffnen und dann Werte aus ihr holen. Das Funktioniert auch wunderbar. Allerdings muss ich nun noch in einem Kombinationsfeld ein Wert auswählen damit ich die richtigen Daten aus dem Dokument ziehen kann.
Dieses will allerdings nicht funktionieren.
Hier mein Code:
Public Function GetValueWF(file As String, ort As String, sheet As Integer, boxname As String,  _
sheetname As String, FieldIndex As Integer) As Double
Dim Arbeitsmappe As Workbook, Tabelle1 As String, cb As MSForms.ComboBox
Set Arbeitsmappe = Application.Workbooks.Open(file)
Arbeitsmappe.Activate
Dim feldinhalt As Double
Volumen.OLEObjects("Dropdown1").SetFocus
Volumen.OLEObjects("Dropdown1").Object.ListIndex = 7
feldinhalt = Arbeitsmappe.Sheets(sheet).Range(ort).Value
GetValueWF = feldinhalt
Arbeitsmappe.Close SaveChanges:=False
End Function
Der Fehler: Laufzeitfehler 424 Objekt erforderlich bei Zeile -> Volumen.OLEObjects("Dropdown1").SetFocus
Wäre sehr schön wenn mir Jemand weiterhelfen könnte.
VG
Michael
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Eintrag aus Kombinationsfeld per VBA auswählen
29.07.2011 18:28:23
fcs
Hallo Michael,
wenn du Objekte in externen Arbeitsmappen ansprechen willst, dann gibst du am besten immer die Referenz zu den Eltern-/Eigentümer-Objekten komplett an.
Es müßte dann etwa wie folgt aussehen. Die erforderliche Anweisung zum Setzen des Index-Wertes hängt dann vom Typ der DropDown/Combobox. Ich tippe, dass du die Zeile mit "Shapes" verwenden muss.
Gruß
Franz
Sub aTest()
'  Test-Anweisungen zum Auslesen von Werten
ActiveSheet.Range("A3") = GetValueWF(file:="C:\Users\Public\Test\DataVolumen", _
ort:="A1", sheet:=1, boxname:="Combobox1", sheetname:="", FieldIndex:=Range("A2"))
ActiveSheet.Range("A4") = GetValueWF(file:="C:\Users\Public\Test\DataVolumen", _
ort:="A1", sheet:=1, boxname:="DropDown 2", sheetname:="", FieldIndex:=Range("A2"))
End Sub
Public Function GetValueWF(file As String, ort As String, sheet As Integer, boxname As String,  _
_
sheetname As String, FieldIndex As Integer) As Double
Dim Arbeitsmappe As Workbook, Tabelle1 As String ', cb As MSForms.Combobox
Application.ScreenUpdating = False
Set Arbeitsmappe = Application.Workbooks.Open(file)
'    Arbeitsmappe.Activate 'überflüssig
Dim feldinhalt As Double
On Error Resume Next 'Zeile nur zum Testen, damit bei falschem Objekt-Typ Zeile ü _
bersprungen wird.
'    Volumen.OLEObjects("Dropdown1").SetFocus ' nicht erforderlich - überflüssig
' Anweisung für eine Combobox aus der Steuerelemente-Toolbox (Active-X-Element)
Arbeitsmappe.Sheets("Volumen").OLEObjects(boxname).Object.ListIndex = FieldIndex '7
'    Volumen.OLEObjects("Dropdown1").SetFocus
' Anweisung für eine DropDown-Liste aus den Formularelementen
Arbeitsmappe.Sheets("Volumen").Shapes(boxname).ControlFormat.Value = FieldIndex '7
Application.Calculate 'ggf. erforderlich, wenn aufwendige Berechnungen an die Auswahl _
gekoppoelt sind
feldinhalt = Arbeitsmappe.Sheets(sheet).Range(ort).Value
GetValueWF = feldinhalt
Arbeitsmappe.Close SaveChanges:=False
Application.ScreenUpdating = False
End Function

Anzeige
AW: Eintrag aus Kombinationsfeld per VBA auswählen
01.08.2011 14:29:38
Michael
Wunderbar! Vielen Dank hat bestens geklappt!
;
Anzeige
Anzeige

Infobox / Tutorial

Eintrag aus Kombinationsfeld per VBA auswählen


Schritt-für-Schritt-Anleitung

Um einen Eintrag aus einem Kombinationsfeld in Excel per VBA auszuwählen, befolge diese Schritte:

  1. Öffne deine Excel-Datei und aktiviere den VBA-Editor mit ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Public Function GetValueWF(file As String, ort As String, sheet As Integer, boxname As String, _
    sheetname As String, FieldIndex As Integer) As Double
        Dim Arbeitsmappe As Workbook
        Set Arbeitsmappe = Application.Workbooks.Open(file)
        Dim feldinhalt As Double
    
        ' Auswahl des Eintrags im Kombinationsfeld
        Arbeitsmappe.Sheets(sheetname).OLEObjects(boxname).Object.ListIndex = FieldIndex
    
        ' Wert aus dem angegebenen Ort abrufen
        feldinhalt = Arbeitsmappe.Sheets(sheet).Range(ort).Value
        GetValueWF = feldinhalt
    
        Arbeitsmappe.Close SaveChanges:=False
    End Function
  4. Verwende die Funktion in einem anderen Sub, um den Wert aus dem Kombinationsfeld auszuwählen:

    Sub aTest()
        ActiveSheet.Range("A3") = GetValueWF(file:="C:\DeinPfad\DeineDatei.xlsx", _
        ort:="A1", sheet:=1, boxname:="Combobox1", sheetname:="Volumen", FieldIndex:=0) 'Index beginnt bei 0
    End Sub
  5. Ändere die Parameter (Dateipfad, Ort, Sheetname), um sie an deine Bedürfnisse anzupassen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 424 – Objekt erforderlich: Dieser Fehler tritt auf, wenn das Kombinationsfeld nicht korrekt referenziert wird. Stelle sicher, dass der boxname und der sheetname korrekt sind und dass das Kombinationsfeld tatsächlich im angegebenen Arbeitsblatt existiert.

  • Index außerhalb des Bereichs: Wenn du versuchst, einen Index zu wählen, der nicht existiert, wirst du diesen Fehler erhalten. Überprüfe, dass der FieldIndex im richtigen Bereich liegt (0 bis n-1, wobei n die Anzahl der Elemente im Kombinationsfeld ist).


Alternative Methoden

Du kannst auch das Kombinationsfeld über Formularelemente ansprechen:

Arbeitsmappe.Sheets(sheetname).Shapes(boxname).ControlFormat.Value = FieldIndex

Diese Methode ist nützlich, wenn du mit Formularelementen anstelle von Active-X-Steuerelementen arbeitest.


Praktische Beispiele

Hier sind einige Beispiele, wie du das Kombinationsfeld in Excel nutzen kannst:

  • Beispiel 1: Werte aus einer externen Datei auswählen und in deiner aktuellen Datei anzeigen:

    Sub Beispiel()
        Dim wert As Double
        wert = GetValueWF(file:="C:\DeinPfad\Daten.xlsx", ort:="B1", sheet:=1, boxname:="Kombobox1", sheetname:="Datenblatt1", FieldIndex:=2)
        MsgBox "Der ausgewählte Wert ist: " & wert
    End Sub
  • Beispiel 2: Mehrere Dropdowns in einer Schleife ansprechen:

    Sub MehrereDropdowns()
        Dim i As Integer
        For i = 0 To 5
            ActiveSheet.Cells(i + 1, 1).Value = GetValueWF(file:="C:\DeinPfad\Daten.xlsx", ort:="B" & (i + 1), sheet:=1, boxname:="Kombobox" & (i + 1), sheetname:="Datenblatt1", FieldIndex:=i)
        Next i
    End Sub

Tipps für Profis

  • Verwende Error Handling: Nutze On Error Resume Next, um Fehler elegant zu handhaben, ohne dass das Makro sofort abbricht.

  • Teste die Funktionalität: Füge Debugging-Code hinzu, um sicherzustellen, dass die richtigen Werte an die Funktion übergeben werden.

  • Dokumentiere deinen Code: Schreibe Kommentare zu deinem Code, um dir und anderen zu helfen, die Logik später leichter nachzuvollziehen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Kombinationsfeld korrekt funktioniert?
Überprüfe, ob der boxname und der sheetname richtig geschrieben sind und dass das Kombinationsfeld im angegebenen Arbeitsblatt vorhanden ist.

2. Was kann ich tun, wenn das Kombinationsfeld nicht reagiert?
Stelle sicher, dass das Kombinationsfeld nicht gesperrt ist und dass das Makro mit der richtigen Excel-Version kompatibel ist. In manchen Fällen kann ein Neustart von Excel helfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige