Уважаемые форумчане, доброго времени суток. Пробую написать функцию, которая выделяет ячейку определенным цветом, в зависимости от текста. Например если текст "КР", значит красный цвет. Когда запускаю функцию на определенном листе, то ошибка "#ЗНАЧ!". [vba]
Код
Function ЦВЕТ (b As String) Имя_листа = ActiveSheet.Name Имя_ячейки = ActiveCell.row If b = "КР" Then Sheets(Имя_листа ).Cells(Имя_ячейки , 1).Interior.ColorIndex = 3 end function
[/vba] Что придумать пока не знаю. Как реализовать через условное форматирование, тоже не знаю
Уважаемые форумчане, доброго времени суток. Пробую написать функцию, которая выделяет ячейку определенным цветом, в зависимости от текста. Например если текст "КР", значит красный цвет. Когда запускаю функцию на определенном листе, то ошибка "#ЗНАЧ!". [vba]
Код
Function ЦВЕТ (b As String) Имя_листа = ActiveSheet.Name Имя_ячейки = ActiveCell.row If b = "КР" Then Sheets(Имя_листа ).Cells(Имя_ячейки , 1).Interior.ColorIndex = 3 end function
[/vba] Что придумать пока не знаю. Как реализовать через условное форматирование, тоже не знаюA_3485
Как реализовать через условное форматирование, тоже не знаю
А что касается пользовательских функций, используемых на рабочем листе, то они должны возвращать значения, которое отобразится в ячейке ввода. Все операторы действия (заливка, закраска, вставка встрок, удаление ячеек и т.п.) в функции рабочего листа ИГНОРИРУЮТСЯ и приводят к ошибке #ЗНАЧ! Поэтому с помощью функций на листе Вы свою задачу не решите.
Как реализовать через условное форматирование, тоже не знаю
А что касается пользовательских функций, используемых на рабочем листе, то они должны возвращать значения, которое отобразится в ячейке ввода. Все операторы действия (заливка, закраска, вставка встрок, удаление ячеек и т.п.) в функции рабочего листа ИГНОРИРУЮТСЯ и приводят к ошибке #ЗНАЧ! Поэтому с помощью функций на листе Вы свою задачу не решите.Gustav
Сделать то же самое - ЧТО? УФ или неработающую пользовательскую функцию? И - ГДЕ, в каком контексте? В Excel или в таблицах Google? Какую задачку решаете?
Сделать то же самое - ЧТО? УФ или неработающую пользовательскую функцию? И - ГДЕ, в каком контексте? В Excel или в таблицах Google? Какую задачку решаете?Gustav
Все операторы действия (заливка, закраска, вставка встрок, удаление ячеек и т.п.) в функции рабочего листа ИГНОРИРУЮТСЯ
Ну зачем же так категорично? У нас есть же Evaluate [vba]
Код
Function ЦВЕТ$(ByRef r As Range, b$, iColor%) Dim s$, s1$ On Error Resume Next If b = "КР" Then iColor = 3 Else iColor = xlNone s = r.Address(, , Application.ReferenceStyle, 1) s1 = Application.Caller.Address(, , Application.ReferenceStyle, 1) Evaluate "Module1.Colorize(" & s & "," & s1 & "," & iColor & ")" DoEvents ЦВЕТ = IIf(r.Interior.ColorIndex = iColor, "ГОТОВО!", "ОШИБКА!") End Function Function Colorize(ByRef r As Range, ByRef r1 As Range, iColor%) On Error Resume Next If Application.Caller.Address <> r1.Address Then r.Interior.ColorIndex = iColor End If End Function
Все операторы действия (заливка, закраска, вставка встрок, удаление ячеек и т.п.) в функции рабочего листа ИГНОРИРУЮТСЯ
Ну зачем же так категорично? У нас есть же Evaluate [vba]
Код
Function ЦВЕТ$(ByRef r As Range, b$, iColor%) Dim s$, s1$ On Error Resume Next If b = "КР" Then iColor = 3 Else iColor = xlNone s = r.Address(, , Application.ReferenceStyle, 1) s1 = Application.Caller.Address(, , Application.ReferenceStyle, 1) Evaluate "Module1.Colorize(" & s & "," & s1 & "," & iColor & ")" DoEvents ЦВЕТ = IIf(r.Interior.ColorIndex = iColor, "ГОТОВО!", "ОШИБКА!") End Function Function Colorize(ByRef r As Range, ByRef r1 As Range, iColor%) On Error Resume Next If Application.Caller.Address <> r1.Address Then r.Interior.ColorIndex = iColor End If End Function
Ну зачем же так категорично? У нас есть же Evaluate
У меня почему то после срабатывания функции, когда я например удалил КР и заново в ячейку ввел значение КР, EXCEL выдает ошибку: Искать в интернете, перезапустить, отладить.
Ну зачем же так категорично? У нас есть же Evaluate
У меня почему то после срабатывания функции, когда я например удалил КР и заново в ячейку ввел значение КР, EXCEL выдает ошибку: Искать в интернете, перезапустить, отладить.A_3485
Сообщение отредактировал A_3485 - Воскресенье, 10.11.2019, 15:40