Доброго всем времени суток. Уважаемые форумчане, помогите немного с задачей. Задача такая: есть кнопка, цвет которой меняется в зависимости от значения ячейки на листе. Если кнопка расположена на листе, я знаю как это сделать (кстати благодаря вашему форуму), а если она на форме? Пытался делать через Private Sub UserForm_load, initialize, activate... Но видимо что-то не так прописываю... Скорректируйте пример, если кто-то знает. Заранее спасибо!
Изменение цвета кнопки на форме, в зависимости от значения ячейки на листе
14.01.2013 14:31:59
|
|
|
|
14.01.2013 14:38:45
Да то же самое:
|
|||
|
|
14.01.2013 14:49:17
т.е. Открыл форму -> ввел необходимое значение в ячейку -> кнопка(и) на форме отследили это и изменили свои свойства в зависимости от значения.
|
|
|
|
14.01.2013 14:55:20
Или красить каждую?
|
|
|
|
14.01.2013 14:59:31
Юрий, не совсем понимаете задачу. Надо красить не ту кнопку, которую нажимаешь! Одну нажимаешь - она задает значение ячейке. А вот другая уже в зависимости от этого значения и окрашивается.
Private Sub Button1_Click() -> значение ячейки -> Другаякнопка.BackColor = vb..... |
|
|
|
14.01.2013 15:08:20
|
|||
|
|
14.01.2013 15:11:26
В примере она находится на форме и называется "кнопка зеленая" (Button - в коде)
Должно получиться так, как если бы кнопку CommandButton1 с листа перенесли бы на форму... Код для CommandButton1 прописан в корне книги: Private Sub Workbook_Open() With ActiveSheet If ActiveSheet.Name = "Лист1" Then If [a1] = 0 Then .CommandButton1.BackColor = vbGreen .CommandButton1.Caption = [c1] ElseIf [a1] > 0 Then .CommandButton1.BackColor = vbRed .CommandButton1.Caption = [c1] Else .CommandButton1.BackColor = vbBlue .CommandButton1.Caption = [c1] End If End If End With End Sub Private Sub WorkBook_SheetChange(ByVal sh As Object, ByVal Target As Range) ..... Что поменять, если кнопка оказалась бы в форме?
Изменено: |
|
|
|
14.01.2013 15:17:32
Наверное вот так?
Для того чтобы
|
|||
|
|
14.01.2013 15:17:33
Нормально придумали назвать :-)
Так продублируйте проверку во все три кнопки:
Или оформите отдельной процедурой и вызывайте её... |
|||
|
|
14.01.2013 15:22:59
А раз Вы явно кнопками задаёте значения, то и проверка не нужна: одновременно со значением ячейке, присваивайте нужный цвет кнопке.
|
|
|
|
14.01.2013 15:23:32
Все отлично работает, огромное спасибо Юрий)
Посмотрел сейчас, видимо первоначальный ваш код:
был верен... Я так понимаю, "Ме." перед кнопкой делает ее активной) В любом случае огромное спасибо)) |
|||
|
|
14.01.2013 15:30:13
Ме перед кнопкой не делает её активной - это признак принадлежности к родительскому объекту (форме).
Попробуйте такой вариант: в кодах трёх кнопок оставьте только присвоение значений ячейке А1, а в модуль листа скопируйте такой код:
И я бы вызов формы перенёс из модуля листа в стандартный модуль. |
||||
|
|
|||
Читают тему