Я написал функцию VBA, которая принимает два параметра: первый - строка, а второй - диапазон, указанный на листе как:
=strPack(B1,G3)
В коде эта процедура объявленакак:
Public Function strPack(ByVal strHex As String, ByRef rngCnt As Range) As String
On Error Goto ErrHandler
If False Then
ErrHandler:
MsgBox Err.Description
Exit Function
End If
Dim intCnt As Integer
intCnt = 0
'...do something with strHex and increment intCnt whilst we go
rngCnt.Value = CStr(intCnt)
'strPack is populated by the body of the function
strPack = "Hello World"
End Function
Я пробовал .Value, .Value2 и .Text, все приводит к ошибке:
Application-defined or object-defined error
Когда я смотрю в отладчике, и strHex, и rngCntдействительны и правильны.Почему я не могу назначить диапазон и как его исправить?
Обработчик ошибок не проблема, попробуйте его, он отлично работает и является стандартным способом выявления ошибок и отменыФункция при возникновении ошибки.
[Edit] Я только что попробовал следующее:
Public Sub updateCount()
Worksheets("Sheet1").Range("G3").Value = CStr(intProcessed)
End Sub
intProcessed является глобальным для модуля и является целым числом, результат такой же, точнота же ошибка.
[Edit2] Я хочу удалить этот пост, так как теперь я изменил подход к вызову другой подпрограммы, которая возвращает значение, которое помещается в ячейку.Я не могу удалить это!Спасибо всем за помощь.