Registriert seit: 12.04.2014
Version(en): Office 365
Hallo
Und das nächste Problem.
Code:
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
Die Zeile mit
.Add Type wird markiert.
Code:
Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 12.04.2014
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">
Registriert seit: 12.04.2014
Version(en): Office 365
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.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 12.04.2014
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">
Registriert seit: 12.04.2014
Version(en): Office 365
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.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo
Meine Forschungen haben mich hierhin geführt:
http://msdn.microsoft.com/de-de/library/...90%29.aspxCode:
Ausnahmetyp Fehlernummer Bedingung
ArgumentException 5 SourceArray ist nicht eindimensional.
Hier habe ich einen Code zur Ermittlung der Anzahl der Dimensionen eines Array gefunden:
http://msdn.microsoft.com/de-de/library/bb978902.aspxDas Ergebnis ist 2.
Warum?
Es gibt nur eine "Spalte" und mehrere "Zeilen".
Wie kann ich erzwingen daß das Array nur eine Dimension hat?
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo Uwe
Wenn das Array nur eine "Zeile" hat, dann funktioniert es.
Aber bei mehreren "Zeilen" kommt wieder der Laufzeitfehler 5.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 12.04.2014
Version(en): Office 365
Hi
Ich hatte gerade eine verrückte Idee. Einfach das Transponieren wiederholen.
Und siehe da: Es funktioniert.
WTF?! :48:
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.