2017-02-20 5 views
0

Здравствуйте, я хочу реализовать формулу в коде VBA. Он должен проверить, совпадают ли все значения в столбце.Формула VBA не работает должным образом

Dim intBB2 As Integer 
Dim LastRow As Long 
Dim ISINcheck As String 

ISINcheck = WorksheetFunction.CountIf(ActiveWorkbook.Sheets(1).Range(Cells(2, intBB2), Cells(LastRow, intBB2)), _ 
ActiveWorkbook.Sheets(1).Range(Cells(2, intBB2))) _ 
= WorksheetFunction.CountA(ActiveWorkbook.Sheets(1).Range(Cells(2, intBB2), Cells(LastRow, intBB2))) 

переменные intBB2 и LastRow взяты из предыдущего кода, который найти последнюю строку и столбец, в котором формула должна принять для расчетов.

Если я заменяю ссылки диапазона на адрес диапазона (например, I2: I120), он работает. Но так оно и есть, оно дает мне определенную или определяемую объектами ошибку.

ответ

0

решил его таким образом

intValueToFind = Cells(2, intBB2).Value 

For i = 2 To LastRow 
    If Not Cells(i, intBB2).Value = intValueToFind Then 
     ISINcheck = i 
    End If 
Next i 


If ISINcheck = "" Then 
    controlISIN = "N" 
Else 
    controlISIN = "Y" 
End If 

Наверное, не самый элегантный, но работает

+0

Пробовали ли вы мой ответ? – SJR

+0

Да, я получил ту же ошибку – tombata

+0

Вы должны были сказать. Вы фактически присвоили значение этим переменным? – SJR

0

Попробуйте это. Вы должны квалифицироваться все диапазоны с рабочей книги/рабочие листы

With ActiveWorkbook.Sheets(1) 
     ISINcheck = WorksheetFunction.CountIf(.Range(.Cells(2, intBB2), .Cells(LastRow, intBB2)), _ 
      .Range(.Cells(2, intBB2))) _ 
      = WorksheetFunction.CountA(.Range(.Cells(2, intBB2), .Cells(LastRow, intBB2))) 
End With 

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

  • Нет связанных вопросов^_^