Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Laufzeitfehler 5
#1
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!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#2
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.


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
to top
#3
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!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#4
Hi,

du hast auch bemerkt, dass es in dem aufgezeichntet Code im Gegensatz zu deinem noch diesen Teil gibt: Operator:= xlBetween ?


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
to top
#5
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!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#6
Hallo

Meine Forschungen haben mich hierhin geführt:
http://msdn.microsoft.com/de-de/library/...90%29.aspx

Code:
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.aspx

Das 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!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#7
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
to top
#8
Hallo Uwe

Wenn das Array nur eine "Zeile" hat, dann funktioniert es.
Aber bei mehreren "Zeilen" kommt wieder der Laufzeitfehler 5.
Wir sehen uns!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#9
Hi

Ich hatte gerade eine verrückte Idee. Einfach das Transponieren wiederholen.
Und siehe da: Es funktioniert.
WTF?! 48
Wir sehen uns!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  ClearContents Laufzeitfehler 1004 ReleaseVS 11 230 12.02.2017, 05:59
Letzter Beitrag: schauan
  Makro Text zu Email - Laufzeitfehler 5 nico_online 2 52 24.01.2017, 19:28
Letzter Beitrag: nico_online
  Fehlermeldung: "381 Laufzeitfehler" miki0608 6 187 16.01.2017, 12:32
Letzter Beitrag: miki0608
  Visual Basic: Laufzeitfehler 1004 Nordlicht85 10 121 12.01.2017, 16:35
Letzter Beitrag: atilla
  Laufzeitfehler in Excel Heinz Ulm 4 372 11.09.2016, 10:32
Letzter Beitrag: Heinz Ulm
  Laufzeitfehler '1004' - unprotect Methode StefanGruber_LA 2 376 08.08.2016, 13:58
Letzter Beitrag: Kuwer
  Spalteninhalt löschen - Laufzeitfehler 1004 Quantum 7 887 08.06.2016, 09:04
Letzter Beitrag: chris-ka
  Laufzeitfehler obwohl das Macro läuft Quin 3 462 18.04.2016, 10:07
Letzter Beitrag: Kuwer
  Laufzeitfehler ??? Angelina 4 460 17.04.2016, 10:16
Letzter Beitrag: Angelina
  Laufzeitfehler waschulze 3 686 24.02.2016, 10:45
Letzter Beitrag: waschulze

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste