2016-05-11 18 views
2

Ich baue ein Blatt, um Daten aus einer Liste von Stellen zu extrahieren, die ich sortieren und nach Standort und BU filtern muss. Ich benötige den Code, um die Anzahl der Öffnungen zu zählen, und gebe diese Information dann an das Haupt-Sub zurück, um zusätzliche Seiten zu erstellen und das Sub zu loopen. Ich bekomme den obigen Fehler in diesem Segment. Irgendwelche Gedanken darüber, was ich falsch mache?Argument nicht optional Fehler

Sub Organize_Data() 

    Dim A As Integer 
    Dim B As Integer 
    Dim C As Integer 

    Worksheets.Add().Name = "Calculations" 
    Find_Unit 
    Find_Locations 
    Count_BU_Data 
    Count_Country_Data 
    Count_Raw_Data 
End Sub 

Function Count_BU_Data(A As Integer) 

    ActiveWorkbook.Worksheets("Calculations").Range("B3", Worksheets("Calculations").Range("B3").End(xlDown)).Rows.Count 
End Function 

Antwort

3

Ihre UDF:

Function Count_BU_Data(A As Integer) 

ein Argument nimmt (A As Integer), die Sie als ein nicht Optional Argument angegeben haben. Sie rufen die Funktion von Ihrem anderen Routine ohne dieses Argument an:

Sub Organize_Data() 

    Dim A As Integer 
    Dim B As Integer 
    Dim C As Integer 

    Worksheets.Add().Name = "Calculations" 
    Find_Unit 
    Find_Locations 
    Count_BU_Data '// <~~ No argument passed to function. 
    Count_Country_Data 
    Count_Raw_Data 
End Sub 

Daraus ergibt sich die ‚Argument nicht optional‘ Fehler.

Da, diese Funktion nicht erscheint tatsächlich das Argument verwenden, können Sie entweder aus dem Funktionskopf entfernen:

Function Count_BU_Data() As Long '// Note I've included a return value... 

Oder es ein optionales Argument machen

Function Count_BU_Data(Optional A As Integer) As Long 

Sie können Geben Sie auch einen Standardwert an, wenn das optionale Argument nicht angegeben wird

Function Count_BU_Data(Optional A As Integer = 1) As Long 
+0

Wie schlagen Sie vor, es zu reparieren? – TonyP

+0

Siehe Bearbeiten oben ^^ –

+1

Auch, was ist der Sinn dieser Funktion? Es gibt keinen Wert oder ändert nichts, so dass es keinen Wert für Ihren Code hat ... –