Microsoft Excel

Herbers Excel/VBA-Archiv

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

nochmal code verkürzen

Betrifft: nochmal code verkürzen von: Erich
Geschrieben am: 27.08.2004 23:34:17

hallo Excelprofis,

wie kann ich den nachfolgenden code verkürzen?

Private Sub UserForm_Initialize()
Dim frm As UserForm
Dim i As Integer
Dim iMax As Integer
Set frm = UserForm1

With frm.ComboBox1
    .Clear
    iMax = ActiveSheet.UsedRange.Rows.Count
    For i = 2 To iMax
    .AddItem Worksheets("System").Cells(i, 1)
    Next i
    End With
End Sub



es sind insgesamt 90 comboboxen alle mit den gleichen werten geladen weden sollen.

kann mir jemand weiter helfen?

gruß
erich
  


Betrifft: alle ComboBox in UserForm füllen von: Christoph M
Geschrieben am: 28.08.2004 00:28:27

Hallo Erich
prinzipiell wäre ich vorsichtig mit "UsedRange"
Besser ist, du fragst die letzte Zelle mit "Cells(Rows,Count, 1).End(xlUp).Row" ab.
Ist keineswegs langsamer, aber dafür zuverlässig

Des Weiteren verstehe ich nicht, warum du einmal "ActiveSheet" verwendest und das nächste mal "Worksheets("System")".
Es macht ja wohl wenig Sinn, die letzte Zeile (iMax) in Tab1 zu ermitteln, und dann in Tab2 bis iMax zu laufen.

Noch 'ne Frage:
Ist "frm" diejenige Userform, die du mit diesem Code initialisierst?
Wenn ja, dann brauchst hierfür keine eigene Variable. Besser, du referenzierst auf die Form mit "Me"

Doch jetzt zu deiner Frage bezüglich der Comboboxes
(den Code musst du noch an deine Bedingungen anpassen...)

Private Sub UserForm_Initialize()
Dim i As Integer, j As Integer
Dim iMax As Integer

iMax = Sheets("System").Cells(Rows.Count, 1).End(xlUp).Row

With Me
   For j = 1 To 90    'so viele???
      .Controls("ComboBox" & j).Clear
      For i = 2 To iMax
         .Controls("ComboBox" & j).AddItem Sheets("System").Cells(i, 1)
      Next i
   Next j
End With

End Sub



Gruß
Christoph


  


Betrifft: Danke von: Erich
Geschrieben am: 28.08.2004 00:39:31

danke für die hilfe


  


Betrifft: AW: alle ComboBox in UserForm füllen von: Nepumuk
Geschrieben am: 28.08.2004 11:49:26

Hallo Erich,
die schnelle Variante:


Private Sub UserForm_Activate()
    Dim int_Index As Integer
    With Sheets("System")
        For int_Index = 1 To 90
            Controls("ComboBox" & int_Index).List = .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value
        Next
    End With
End Sub


Gruß
Nepumuk