публичная функция в Excel, которая не работает должным образом, как UDF

Я использую этот хак, чтобы перехватить движение мыши по ячейке. В A1 я ввел в расчет следующую формулу:

=IFERROR(HYPERLINK(OnMouseOver(ROW(),COLUMN()),"Click here"), "Click here") 

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

 Public Function OnMouseOver(row, col) Dim ra As Range Set ra = Sheets("Sheet1").Columns("A:BJ") 'Range("griglia") ra.Borders(xlDiagonalDown).LineStyle = xlNone ra.Borders(xlDiagonalUp).LineStyle = xlNone ra.Borders(xlEdgeLeft).LineStyle = xlNone ra.Borders(xlEdgeTop).LineStyle = xlNone ra.Borders(xlEdgeBottom).LineStyle = xlNone ra.Borders(xlEdgeRight).LineStyle = xlNone ra.Borders(xlInsideVertical).LineStyle = xlNone ra.Borders(xlInsideHorizontal).LineStyle = xlNone Set ra = ActiveSheet.Cells(row, col) ra.Borders(xlDiagonalDown).LineStyle = xlNone ra.Borders(xlDiagonalUp).LineStyle = xlNone With ra.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThick End With With ra.Borders(xlEdgeTop) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThick End With With ra.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThick End With With ra.Borders(xlEdgeRight) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThick End With End Function 

Эта функция не очищает существующие границы, и кроме того, она рисует только тонкие границы вокруг A1. С другой стороны, он работает так, как ожидалось, когда я запускаю его через этот код:

 Sub testfunction() Call OnMouseOver(1, 1) End Sub 

Почему это странное поведение?

Это сработало для меня – я мог бы установить цвет, но не linestyle, чтобы xlNone

 Public Function OnMouseOver(row, col) With ActiveSheet .Range("C5:H23").Borders.Color = RGB(200, 200, 200) .Cells(row, col).Borders.Color = vbRed End With End Function 
  • Ячейки, использующие UDF в Excel, не переучитывают
  • Что означает «Microsoft Office Excel ожидает, что другое приложение завершит действие OLE»?
  • Excel сбой, когда одна пользовательская функция перезаписывает другую
  • UDF для удаления специальных символов, знаков препинания и пробелов внутри ячейки для создания уникального ключа для Vlookups
  • Измените диапазон и верните его из UDF
  • Ошибка #VALUE при копировании листов
  • Пользовательский Sub с дополнительными параметрами - не отображается в окне макроса
  • Excel VBA Непрерывная матрица Определенная пользователем функция Fix
  • Как превратить формулу Excel в UDF?
  • UDF не рассчитывается в коде VBA
  • UDF для возврата отформатированного номера
  • Давайте будем гением компьютера.