Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

MSForms.ComboBox an Prozedur übergeben

Betrifft: MSForms.ComboBox an Prozedur übergeben von: Hendrik
Geschrieben am: 28.07.2014 14:03:06

Hallo zusammen,

ich habe die Prozedur:

Sub durchsucheAuswahl(meineBox As MSForms.ComboBox, strBlatt As String, strSpalte As String,  _
intStartZeile)
    Dim blnEnde As Boolean
    Dim i As Long
    
    blnEnde = False
    With ThisWorkbook.Worksheets(strBlatt).Range(strSpalte & intStartZeile)
        Do While blnEnde = False
            Call ergaenzeBox(meineBox, .Offset(i, 0).Value)
            i = i + 1
            If .Offset(i, 0).Value = "" Then blnEnde = True
        Loop
    End With
End Sub

Diese rufe ich wie folgt auf:
Call durchsucheAuswahl(cboServer, strBlattAbfragen, "I", intBlattAbfragenStartZeile)
cboServer ist eine ComboBox, in der dann Server stehen sollen. Diese stehen in Spalte I.

Beim Debuggen ist meineBox nach dem Aufruf der Prozedur aber leer. Wie kommt das?!

Danke und Grüße
Hendrik

  

Betrifft: AW: MSForms.ComboBox an Prozedur übergeben von: fcs
Geschrieben am: 28.07.2014 16:07:07

Hallo Hendrik,

ich hab dein Makro mal in einem Userform getestet.
Es funktioniert.
Bei dir muss irgendetwas bei der Blatt- oder Zeilenauswahl nicht stimmen oder in der Zelle unterhalb der gewählten Startzeile in Spalte "I" steht eine Formel mit dem Ergebnis "".

Nachfolgend meine Testmakros.

Gruß
Franz

'Initialisierungs-Prozedur des Userforms
Private Sub UserForm_Initialize()
  Dim strBlattAbfragen As String, intBlattAbfragenStartZeile As Variant
'Testeingaben
  strBlattAbfragen = InputBox("Blatt für Serverauswahl", "strBlattAbfragen", "Master")
  intBlattAbfragenStartZeile = Application.InputBox("Startzeile für Serverauswahl in Spalte I",  _
_
    "intBlattAbfragenStartZeile", 2, Type:=1)
  
'Diese rufe ich wie folgt auf:
  Call durchsucheAuswahl(cboServer, strBlattAbfragen, "I", intBlattAbfragenStartZeile)

End Sub





'nachfolgende  Makros in einem allgemeinen Modul oder unter dem Userform-Modul
Sub durchsucheAuswahl(meineBox As MSForms.ComboBox, strBlatt As String, strSpalte As String, _
intStartZeile)
    Dim blnEnde As Boolean
    Dim i As Long
    
    blnEnde = False
    With ThisWorkbook.Worksheets(strBlatt).Range(strSpalte & intStartZeile)
        Do While blnEnde = False
            Call ergaenzeBox(meineBox, .Offset(i, 0).Value)
'            meineBox.AddItem .Offset(i, 0).Value 'ALternativzeile für Call ergaenzeBox(...)
            i = i + 1
            If .Offset(i, 0).Value = "" Then blnEnde = True
'            If IsEmpty(.Offset(i, 0)) Then blnEnde = True 'alternative Prüfung
        Loop
    End With
End Sub


Sub ergaenzeBox(objBox As Object, varItem)
  objBox.AddItem varItem
End Sub



  

Betrifft: AW: MSForms.ComboBox an Prozedur übergeben von: Hendrik
Geschrieben am: 28.07.2014 21:01:48

Danke, Franz.
So ganz verstanden habe ich meinen Fehler noch nicht, aber ich werde mir das anschauen. Danke!


 

Beiträge aus den Excel-Beispielen zum Thema "MSForms.ComboBox an Prozedur übergeben"