Combo füllen / Range Objekt übergeben

20/04/2010 - 00:22 von Jens Meier | Report spam
Hallo NG,

ich möchte eine Combo-Box in eienr Userform mit Daten aus einer Spalte
füllen. Dafür hab ich folgende Prozedur geschrieben bzw angepasst:

Sub FillCombo(objCombo As Control, xlrListRange As Range)

Dim LastRow, X As Integer

xlrListRange.Select

LastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row - 1

ReDim strListVal(LastRow) As String

For X = 0 To LastRow
Cells(X + 1, 1).Select
strListVal(X) = Cells(X + 1, 1).Value
objCombo.AddItem strListVal(X)
Next

End Sub

Ich rufe sie folgendermassen auf:
FillCombo UserForm1.cmbVName, Range("Tabelle2!a1")

leider bekomme ich 1004: Die Select-Methode des Range-Objektes konnte nicht
ausgeführt werden.

Kann mir bitte jmd helfen? Bin noch relativ frisch, was Excel angeht.

Gruss,

Jens
 

Lesen sie die antworten

#1 Peter Schleif
20/04/2010 - 06:16 | Warnen spam
Jens Meier schrieb am 20.Apr.2010 00:22 Uhr:

xlrListRange.Select

leider bekomme ich 1004: Die Select-Methode des Range-Objektes konnte nicht
ausgeführt werden.



Bevor Du ein Range selektieren kannst, musst Du immer sicherstellen, das
die zugehörige Tabelle ebenfalls selektiert ist. Wahrscheinlich war das
beim Ausführen des Befehls "xlrListRange.Select" nicht der Fall.

xlrListRange.Worksheet.Select
xlrListRange.Select

sollte das Problem beheben. Allerdings liest dein Code immer die Werte
der Spalte A ein, denn der Bereich "xlrListRange" wird beim Füllen der
ComboBox gar nicht berücksichtigt:

Cells(X + 1, 1).Value

sind immer die Werte der ersten Spalte – egal was Du vorher selektiert
hast. Du kannst es leicht überprüfen, wenn Du FillCombo mal mit B1 statt
A1 aufrufst. Du bekommst trotzdem die Werte aus Spalte A. Mit

xlrListRange.EntireColumn.Cells(X+1,1).Value

referenzierst Du tatsàchlich die Zellen der Spalte die Du an
xlrListRange übergeben hast.

Peter

Ähnliche fragen