Ошибка типа данных

Автор Mercury, 20 октября 2023, 11:42

Mercury

Здравствуйте!

Создал пользовательскую функцию "Povtor" в VBA Excel (см. файл "Польз_функция.jpg").
Ввёл в диалоговом окне аргумент функции "rng" (диапазон смежных ячеек столбца).
В окне отобразилось правильное значение функции для текущей ячейки "ЛОЖЬ" (см. файл "Польз_функция.jpg").
Однако в таблице Excel в текущей ячейке отображается ошибка типа данных (см. файл "Табл.jpg").
Подскажите, пожалуйста, в чём причина этой ошибки?

С уважением, Александр.

Администратор

Не знаю, почему происходит ошибка.
Скопируйте код пользовательской функции из VBA сюда на форум, я у себя запущу и посмотрю, в чём может быть проблема.

Mercury

Здравствуйте!

Прилагаю код пользовательской функции:

Function Povtor(rng As Range)
Dim cell As Range
For Each cell In rng
If WorksheetFunction.CountIf(rng, cell.Value) > 1 Then
cell.Interior.Color = RGB(255, 0, 0) ' Пометить повторы красным цветом
End If
Next cell
If ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 0, 0) Then
Povtor = True
Else
Povtor = False
End If
End Function

С уважением, Александр.

Администратор

Если пользовательская функция делает какое-то действие, то функция останавливается на этом месте.
Т.е. в пользовательские функции нельзя записывать команды, которые что-то делают.

Конкретно в вашем случае, на этой строке пользовательская функция прерывается и остальные команды функции не выполняются:
cell.Interior.Color = RGB(255, 0, 0)

Обходное решение - вам нужно использовать макрос в виде события: когда будет происходить изменение в диапазоне $AE$2:$AE$9, будет запускаться макрос, который будет делать ваше задание.

Mercury

Спасибо, буду это учитывать.