Hi,
also mein Makrorekorder zeichent diesen Code auf:
Code:
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$1:$A$8"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Da niemand weiß, was
Join(Datensatzgruppe_Array, ",") ist, kann man auch schlecht dazu etwas sagen.
Dateiupload bitte im Forum! So geht es:
Klick mich!" height=35" align="left" alt="Grußformel">
Dateiupload bitte im Forum! So geht es: Klick mich!" height=35" align="middle" alt="Beverly's Excel - Inn">
Hallo Karin
Hier mal der relevante Teil des Codes.
Code:
Sub Irgendwas()
Dim Datensatzgruppe As DAO.Recordset
Dim Feld As DAO.Field
Dim FeldNr As Integer
[...]
'Ausgabe der Daten in ein Array
Dim Datensatzgruppe_Array() As Variant
Dim Anzahl_Datensätze As Integer
Anzahl_Datensätze = Datensatzgruppe.RecordCount
Datensatzgruppe.MoveFirst
ReDim Datensatzgruppe_Array(Anzahl_Datensätze)
Datensatzgruppe_Array = Datensatzgruppe.GetRows(Anzahl_Datensätze)
'Kontrolle
For Each Feld In Datensatzgruppe.Fields
FeldNr = Feld.OrdinalPosition
For i = 0 To Anzahl_Datensätze - 1
Debug.Print FeldNr, i, Datensatzgruppe_Array(FeldNr, i)
Next i
Next
[...]
With ThisWorkbook.Worksheets("Grunddaten").Range("B3").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(Datensatzgruppe_Array, ",")
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Formula1:=Join(Array, ",") habe ich in als Lösung in diversen Beiträgen gefunden. Ich verstehe nur nicht warum das bei mir nicht funktioniert.
Hi,
du hast auch bemerkt, dass es in dem aufgezeichntet Code im Gegensatz zu deinem noch diesen Teil gibt:
Operator:= xlBetween ?
Dateiupload bitte im Forum! So geht es:
Klick mich!" height=35" align="left" alt="Grußformel">
Dateiupload bitte im Forum! So geht es: Klick mich!" height=35" align="middle" alt="Beverly's Excel - Inn">
Hallo Karin
xlBetween spielt doch nur eine Rolle wenn es einen unteren und einen oberen Wert gibt.
Aber ich habe es dennoch mal probiert. Ohne Erfolg. Weiterhin Laufzeitfehler 5.
Hallo Detlef,
mit der Transpose-Funktion geht das z.B.:
Code:
Sub ArrayTest()
Dim myA As Variant
myA = Range("A1:A3").Value
Stop 'myA ist zweidimensional
myA = Application.WorksheetFunction.Transpose(myA)
Stop 'myA ist eindimensional
End Sub
Gruß Uwe
Hallo Uwe
Wenn das Array nur eine "Zeile" hat, dann funktioniert es.
Aber bei mehreren "Zeilen" kommt wieder der Laufzeitfehler 5.
Hi
Ich hatte gerade eine verrückte Idee. Einfach das Transponieren wiederholen.
Und siehe da: Es funktioniert.
WTF?! :48: