2015-05-04 8 views
0

Я хочу найти номер IC в владельце политики (NRIC). Но в коде есть ошибка.Ошибка несоответствия типа instr

Dim col As Long 
    Dim IC, NRIC 
    Dim name 

    name = ActiveSheet.Cells(rw, 1).Value 

    NRIC = ThisWorkbook.Sheets("main").Columns(9) 

    IC = InStr(1, name, "(" & NRIC & ")") <<<<< this is the problem (type mismatch error) 

    MsgBox IC 

Дисплей:

Основной лист

имя столбца

  • шерри

IC колонки

  • S1233456c

policydetails Лист

policyowner (NRIC) колонка

  • шерри (S1233456c)

ответ

1

InStr Function третий аргумент ожидает, что строка (подстроки).
Фактически вы передали массив, который является всей колонкой (9).
Для того, чтобы работать, вам нужно перебрать все значения в колонке (9), как это:

Dim c As Range 
With ThisWorkbook.Sheets("main") 
    For Each c In .Columns(9).CurrentRegion 
     If InStr(1, name, c.Value2) <> 0 Then 
      MsgBox c.Value2 ' I don't know what you want to do if you find the cell 
      Exit Sub 
     End If 
    Next 
End With 

В качестве альтернативы можно использовать Find Method диапазона объекта.

Dim c As Range 
With ThisWorkbook.Sheets("main") 
    Set c = .Columns(9).CurrentRegion.Find(What:=name, LookAt:=xlPart) 
    If Not c Is Nothing Then MsgBox c.Value2 
End With 
Смежные вопросы