2016-08-22 2 views
0

У меня есть код, который я написал, и у меня возникают проблемы с определенной строкой (утверждение Countifs). Я никогда раньше не использовал это в VBA, поэтому думаю, что это может быть связано с синтаксисом? Пожалуйста, может кто-нибудь взглянуть и сообщить мне?Ошибка VBA Countifs

Большое спасибо!

Sub TradeCopy() 

'Declare Variables 
Dim x As Worksheet 
Dim y As Worksheet 
Dim z As Range 
Dim FirstRow As Integer 
Dim LastRow As Long 
Dim i As Long 
Dim j As Long 
Dim s As String 
Dim t As String 
Dim count As Long 
Dim startdate As Long 

On Error GoTo ERROREND 

Application.DisplayAlerts = False 
Application.EnableEvents = False 

'Setting Values 
s = ActiveWorkbook.Sheets("Name Creator").Range("B4") 
Set x = ActiveWorkbook.Sheets(s) 

t = ActiveWorkbook.Sheets("Name Creator").Range("B5") 
Set y = ActiveWorkbook.Sheets(t) 

startdate = ActiveWorkbook.Sheets("Name Creator").Range("B3") 
'Find Cell where name occurs 
Set z = x.Columns("A").Find(what:="trade id", LookIn:=xlValues, Lookat:=xlWhole) 

'Return Start Row number 
FirstRow = z.Row + 1 
'Return Last Row number 
LastRow = x.Range("A" & Rows.count).End(xlUp).Row 
'Clear Existing Range of Values 
y.Rows(2 & ":" & Rows.count).ClearContents 

Ниже приведен код, указывающий проблемы, в частности, строка «count =» при запуске отладчика.

'Loop to highlight cells based on conditions 
For i = FirstRow To LastRow 
    count = Application.WorksheetFunction.CountIfs(x.Range("B:B"), x.Range(i, 2), x.Range("L:L"), "<" & startdate) 

Остальной код:

If (x.Cells(i, 21) = "Fra" Or x.Cells(i, 21) = "Swap" Or x.Cells(i, 21) = "Swaption" Or x.Cells(i, 21) = "BondOption" Or x.Cells(i, 21) = "CapFloor") And DateValue(x.Cells(i, 12).Value) > startdate And count <= 0 Then 
     x.Rows.Range("A" & i).Value.Interior.Color = vbRed 
    End If 
Next i 

'Loop to check for all 0 Cells and paste values 
For j = FirstRow To LastRow 
    If x.Cells(j, 1).Interior.Color = vbRed Then 
     x.Rows.Range("A" & j).Value = y.Rows.Range("A" & j).Value 
    End If 
Next j 

'Remove Duplicates 
y.Columns(2).RemoveDuplicates Columns:=Array(1) 

Application.DisplayAlerts = True 
Application.EnableEvents = True 

MsgBox ("All Done!") 

Exit Sub 

ERROREND: 
MsgBox ("Unexpected Error - Please Seek Assistance or Debug Code") 

End Sub 
+0

первым модифицировать 'LastRow = x.Range ("A" & Rows.count) .End (xlUp) .Row 'to' LastRow = x.Range ("A" & x.Rows.count) .End (xlUp) .Row' (не обязательно связано с вашей ошибкой, просто чтобы избежать ошибок в будущем) –

+0

Спасибо, что выбрали это - сделанный. – Dames

+0

Вы все еще получаете эту ошибку? –

ответ

2

Я думаю, что вам нужно изменить .Range к .Cells в ниже:

count = Application.WorksheetFunction.CountIfs(x.Range("B:B"), x.Range(i, 2), x.Range("L:L"), "<" & startdate) 

To:

count = Application.WorksheetFunction.CountIfs(x.Range("B:B"), x.Cells(i, 2), x.Range("L:L"), "<" & startdate) 
+0

Спасибо, это сработало! – Dames

+0

Рад, что я могу помочь – neelsg

Смежные вопросы