публичная функция в 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. С другой стороны, он работает так, как ожидалось, когда я запускаю его через этот код:
- Удалять все, кроме чисел из ячейки
- Уникальная консолидация данных в нескольких рабочих листах
- VBA UDF работает при тестировании, но не при использовании в excel
- Excel VBA: Если ... затем выйти из UDF без изменения значения ячейки
- Преобразование UDF в массив UDF
Sub testfunction() Call OnMouseOver(1, 1) End Sub
Почему это странное поведение?
- UDF, чтобы сделать своего рода замену функции массива
- Ссылка на внешнюю книгу в функции
- Необходимо остановить пересчет UDF, когда удаленные ячейки не удалены
- Excel VBA UDF выполняет в непосредственном окне, не работает на рабочем листе
- Генерация комбинаций атрибутов продукта в Excel
- пользовательская функция не работает vba
- Excel - Пользовательская функция: ,
- Использование функции excel LINEST с несколькими критериями
Это сработало для меня – я мог бы установить цвет, но не 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