Передача аргумента в тип ошибки функции 13 - PullRequest
0 голосов
/ 11 апреля 2019

В настоящее время я получаю ошибку типа 13, потому что функция, кажется, получает неправильный аргумент.Что я делаю не так?

Функция листа 1 (когда подсистема вызывает эту функцию, она генерирует ошибку типа 13):

Function extrapolatendg(row As Range) As Integer

extrapolatendg = Range("b" & row).Value

End Function

Функция листа 6:

Function findrownumberndg(extrapolatendg As Integer)

Set foundcell = Range("a:a").Find(extrapolatendg, lookat:=xlWhole)

If Not foundcell Is Nothing Then

findrownumberndg = 0

Else

findrownumberndg = foundcell.row

End If

End Function

субдействующие функции thisworkbook

Sub getndg()

For x = 6 To sheet1lastrow()

Dim currentRow As Range
Set currentRow = Sheet1.Rows(x)

extraolatendg = Sheet1.extrapolatendg(currentRow)

Sheet6.findrownumberndg (extrapolatendg)

Next

End Sub

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

1 Ответ

0 голосов
/ 11 апреля 2019

Я не думаю, что эта функция делает то, что вы думаете, что она делает.Вот что он делает

Function extrapolatendg(row As Range) As Integer
    'This is a function, it will do a calculation and return a value.
    ' It's name is extrapolatendg, 
     '(it accepts a range object (either a single cell or a block of cells) and calls that range "row") 
     'It will return an Integer value

     extrapolatendg = Range("b" & row).Value
     'since the object called row is being used in a context that expects a value, 
      'VBA will use the default property of the object - in this case the Value property
     'Find the Value property of the range called row 
     'if row is a single cell and has something in it that can be interpreted as a long then 
    'continue, otherwise throw an error of  "Type Mismatch".
    'Concatenate that long with the letter "b"
    'Pass that string as an argument to the function "Range" - 
    'This will return an object of type "Range"
    'Obtain the value of the "value" property of this object
    'Attempt to coerce this value into an Integer 
    '- if this succeeds, return this value as the result of the function extrapolatendg, 
    'otherwise throw an error "Type Mismatch"

 End Function  'finished

Обратите внимание, что для его использования вы должны передать ожидаемый аргумент диапазона, поэтому

        Function findrownumberndg(extrapolatendg(Some cell reference goes here) As Integer)
...