Мне нужна функция VBA, которая хранит один из своих результатов в ячейке, отличной от ячейки, которая вызывает функцию. Я успешно передал функции адрес этой другой ячейки. Моя функция отлично работает, когда вызывается из другого макроса VBA, но когда моя функция вызывается из ячейки на листе Excel, происходит сбой с #VALUE! в вызывающей ячейке и не помещая ничего в целевую ячейку.
Когда я выполняю свою функцию, я вижу, что она правильно имеет адрес ячейки, в которую я хочу поместить значение.
Sub callMyFunc() 'when I call myFunc this way it works perfectly
Dim theAddrRang As Range, resp%
Set theAddrRang = Range("B17")
resp = myFunc(theAddrRang)
MsgBox "resp = " & resp
End Sub
Function myFunc(addrR As Range) As Integer
'If this function is called from worksheet it crashes
Dim theAddr$, addrRstr$
addrRstr = addrR.Address
theAddr = "B14"
MsgBox "Two address strings: " & addrRstr & " " & theAddr
Worksheets("Linda").Range(theAddr).Value = 44 'B14 crashes at this step
Worksheets("Linda").Range(addrRstr).Value = 66 'B17
myFunc = 88
End Function
Я хочу, чтобы функция myFunc поместила значения 44 и 66 в ячейки B14 и B17. Когда я вызываю свою функцию из другого макроса, она работает отлично. Когда я вписываю в ячейку на своем листе следующее: = myFunc (B17), он правильно отображает окно сообщения с двумя адресами, а затем вылетает на следующей строке кода. (Два адреса просто для проверки того, что оба работают; мне действительно нужен только один, переданный в качестве аргумента.)