2017-03-15 6 views
1

Ich habe versucht, VBA eine Spalte der Zellen (die von Benutzern ausgefüllt werden) zu finden, um bestimmte Kriterien zu finden. Nachdem er mit WorksheetFunction.CountIfs kämpfen (habe ich auf diesem Code angesiedelt, und bis zu diesem Zeitpunkt schien es zu funktionieren:VBA: Benanntes Argument nicht gefunden, mehrere .Finds

Sub CalendarColor() 

Call VarDef 

Dim SearchEmpList As Range 
Dim SearchSDate As Range 
Dim SearchEDate As Range 
Dim SearchLType As Range 
Dim SearchPType As Range 

If EmpName <> "" Then 
    With Worksheets(2).Range("B:B") 'Search all of Employee Name list entries 
     Set SearchEmpList = .Find(What:=EmpName, _ 
            After:=.Cells(.Cells.Count), _ 
            LookIn:=xlValues, _ 
            LookAt:=xlWhole, _ 
            SearchOrder:=xlByRows, _ 
            SearchDirection:=xlNext, _ 
            MatchCase:=False) 
    End With 

das ist die erste Spalte und die erste Variable So, die identifiziert werden muss. um auf das jeweilige Startdatum zu verschieben, habe ich diesen Code:

With Worksheets(2).Range("C:C") 'Search all of Start Date list entries 
     Set SearchSDate = .Find(What:=ActiveCell.Value, _ 
           After:=.Cells(.Cells.Count), _ 
           LookIn:=xlValues, _ 
           LookAt:=xlWhole, _ 
           SeachOrder:=xlByRows, _ 
           SeachDirection:=xlNext, _ 
           MatchCase:=False) 
    End With 

In meinen Augen, das ist genau die gleiche, aber ich bin immer den „Laufzeitfehler‚448‘: Named Argument nicht gefunden "bei der Verwendung von Step-in zum Debuggen.

Ist es der ActiveCell.Value? Wenn ja, was kann ich sonst noch verwenden? T sein Skript wird in einem Loop-Skript verwendet, das bei jeder Iteration um 1 verschoben wird - ActiveCell scheint also am plausibelsten zu sein, wenn es überhaupt funktioniert.

Loop-Skript sieht wie folgt aus:

Sub ColorLoop() 

Dim EndNumberA As Integer '31 day months 
Dim EndNumberB As Integer '30 day months 
Dim EndnumberC As Integer '28 day months 
Dim EndNumberD As Integer '29 day months 
Dim i As Integer 

EndNumberA = 31 
EndNumberB = 30 
EndnumberC = 28 
EndNumberD = 29 

'Offset commands need to be tweaked each year to ensure the ActiveCell lands on the first day of the next month 

'January 31d 
For i = 1 To EndNumberA 
    Call CalendarColor 
    ActiveCell.Offset(, 1).Select 
Next i 

'Set ActiveCell to Feb1 
ActiveCell.Offset(1, -28).Select 

'February 28d (Use EndNumberD if leap year) 
For i = 1 To EndnumberC 
    'Call CalendarColor 
    ActiveCell.Offset(, 1).Select 
Next i 

'Set ActiveCell to Mar1 
ActiveCell.Offset(1, -28).Select 

Ich bin ca. 2 Wochen in VBA lernen (und mein erster Beitrag hier), so was auch immer Sie haben, ist willkommen Informationen.

+4

'SeachOrder' <>' SearchOrder', 'SeachDirection' <>' SearchDirection'. – GSerg

+0

Ich bin mir nicht sicher, was das bedeutet ...? Es tut uns leid! – Exulansis

+0

Sie vermissen ** r ** in seachOrder – cyboashu

Antwort

0
SeachOrder:=xlByRows, _ 
SeachDirection:=xlNext, _ 

Das sind Tippfehler. Suche nicht suchen!

Verwandte Themen