Как получить текущую ячейку Excel

#excel #vba

#excel #vba

Вопрос:

У меня есть функция VBA:

 public function MyFunction(someParameters) as Double

  ... do something ...

  return aValue

end function
  

У меня есть лист, где моя функция вызывается из некоторых ячеек:

 A1: =MyFunction(...) 

A2: =MyFunction(...)

A100: =MyFunction(..)
  

Я хотел бы вернуть значение (и это работает), а также добавить комментарий к ячейке…

Если я использую ActiveCell , а затем использую AddComment , это добавит комментарий к последней ячейке, в которой я оставил курсор, а не к «вычисленной активной ячейке».

Как сделать?

Спасибо.

Комментарии:

1. Вы можете ссылаться на ячейку, которая вызывает UDF — я не пробовал это для добавления комментариев. mrexcel.com/forum/excel-questions /…

Ответ №1:

Вы не можете сделать это с помощью ActiveCell . Ваша функция пересчитывает, и каждый раз, когда она называется ActiveCell, это что-то другое (в зависимости от выбора). Логика добавления комментариев через UDF кажется немного ошибочной, но вы можете попробовать это

 Public Function MyFunction() As Double

    MyFunction = 3.141519

    Dim cell As Range
    Set cell = Range(Application.Caller.Address)

    cell.AddComment (cell.Address)

End Function
  

Ответ №2:

Вам нужно использовать Application.Caller , а не ActiveCell .

например

 Function Test() As String
    Test = Application.Caller.Address
End Function
  

Ссылка: http://msdn.microsoft.com/en-us/library/office/ff193687(v=office.15).aspx