Ich habe eine Schaltfläche, die, wenn gedrückt, ruft einige Makros durchgeführt werden. Alle meine Makros laufen gut mit Ausnahme des Makros "AddDropDown". Es hält mich einen Fehler, der sagt "Compile Error: Argument nicht optional (Fehler 449)".Kompilierfehler: Argument nicht optional Fehler, wenn ich Makro von anderen Makro aufrufen
Diese laufen gut, wenn ich manuell nur sie auswähle und auf Ausführen klicke.
Die Hilfeseite sagt "Die Anzahl und Arten der Argumente müssen mit den erwarteten übereinstimmen. Dieser Fehler hat die folgenden Ursachen und Lösungen: ? Falsche Anzahl von Argumenten. Liefern Sie alle notwendigen Argumente. Zum Beispiel benötigt die linke Funktion zwei Argumente; der erste repräsentiert die Zeichenfolge, die bearbeitet wird, und der zweite gibt die Anzahl der Zeichen an, die von der linken Seite der Zeichenfolge zurückgegeben werden sollen. Da keines der Argumente optional ist, müssen beide angegeben werden. • Ausgelassenes Argument ist nicht optional. Ein Argument kann nur bei einem Aufruf einer benutzerdefinierten Prozedur weggelassen werden, wenn es in der Prozedurdeklaration als Optional deklariert wurde. Entweder liefern das Argument in dem Aufruf oder erklären den Parameter Optional in der Definition „
Mein Code ist so etwas wie folgt aus:.
Private Sub Button_Click()
Macro1
Macro2
AddDropDowns
AddDropDown
Macro3
End Sub
und das Makro, das den Fehler gibt, ist derjenige unter:
Sub AddDropDowns()
Dim cell As Range
Dim iDropDown As Long
With Worksheets("SourceSheet")
For Each cell In .Range("B13", .Cells(13, .Columns.Count).End(xlToLeft)).SpecialCells(XlCellType.xlCellTypeConstants)
AddDropDownEnroll Worksheets("DropDownsSheet"), iDropDown, cell.Offset(-1).Value, "='" & .Name & "'!" & cell.Resize(WorksheetFunction.CountA(cell.EntireColumn) - 1).Address
Next cell
End With
End Sub
Sub AddDropDown(sht As Worksheet, dropDownCounter As Long, header As String, validationFormula As String)
With sht.Range("A1").Offset(, dropDownCounter) '<--| reference passed sheet row 1 passed column
.Cells(1, 1) = header '<--| write header
With .Cells(2, 1).Validation '<--| reference 'Validation' property of cell 1 row below currently referenced one
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End With
dropDownCounter = dropDownCounter + 1
End Sub
Sie lesen Sie den Code Sie/einfügen kopieren? Sie rufen 'AddDropDown' ohne Argumente auf, und es ist klar geschrieben, dass 4 (ein Arbeitsblatt, ein langes und zwei Strings) erforderlich ist. –
Ja, die Hilfeseite ist genau richtig. 'Die Anzahl und Typen von Argumenten müssen mit den erwarteten übereinstimmen.Sie haben es ohne Parameter aufgerufen (' AddDropDown') und erwartet 4 Werte ('Sub AddDropDown (siehe Arbeitsblatt, DropDownCounter als Long, Header als String, ValidationFormula) Als String) '). – YowE3K