Страницы: 1
RSS
При снятии галочки на листе присваивать ячейке определенное значение, макрос
 
Извиняюсь, создать тему не получилось, т.к. не помещается. Вот задача, может кто поможет.

Имеется энное кол-во чекбоксов. Если они не активны, то определенной ячейке или диапазону ячеек присваивается определенное значение. В прилагаемом файле G15 должно быть равно, скажем, пяти. Как это сделать? C CheckBox_Change не вышло. Подскажите?
 
Используйте флажок из элементов формы. Связь с ячейкой и проверка состояния ячеек.
 
Ну, я так и хочу сделать. Использовать снятие галочек И условие при этом будет: если, сняты все галочки, то значение ячейки такое-то. Это же и написано в задаче. И я прошу помочь написать макрос.
 
Обязательно с помощью объектов на листе?
 
Как вариант работат, но все же с помощью vba нужно решить задачу. А как вы сделали, чтобы в диапазон значки вставлялись? Это же нужно помнить, какой кнопке галочка соответствует. Не очень удобно.  
 
С мышкой по ячейкам пробовали погулять? В модуль листа заглядывали?

В ячейках шрифт Wingdings
 
Что значит мышкой по ячейкам погулять? Потыкал мышкой по ячейкам. Что должно произойти? У вас выделен определенный диапазон. Если я в него любой знак впишу, то начинает работать условие в формуле. Макрос в модуле что должен делать? Никакой конкретики. Только гадания. Вот что нужно сделать:



Если уберу галочку, то в ячейке должно появиться заданная цифра или буква, или слово.
Т.е. если все три чекбокса.value = False, то Range ("...") = "Ура, получилось". Вот как его в vba прописать непонятно.  
Изменено: Обамка - 29.01.2016 18:37:34
 
Если можно обойтись без объектов на листе - то можно обойтись :)
Цитата
С мышкой по ячейкам пробовали погулять?
ЛКМ (клик левой кнопкой) на ячейке ставит/снимает галку. Код прописан в модуле листа.
Цитата
В модуль листа заглядывали?

См. пример.
В Е2 значение прописывается макросом. Условие - галок в диапазоне равно/не равно 5. В столбце В при установке галки отображается значение.
 
ЛКМ на ячейке не ставит и не снимает галку. "Ура" и "неура" работают при любом знаке в ячейка диапазона А2;А10. Это все не то.

VBA макрос необходим. Я не знаю, как его правильно прописать.
Код
Private Sub CheckBox_Change (ByVal Target As Range)
If CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False Then
 Range("J7") = "Вот это ура!"
 End If
 
' ApplicationEnableEvents = False
 
End Sub
Вот примерно такой код должен быть. Но я плохо разбираюсь в лексиконе vba. CheckBox_change скорее всего должен быть. Но макрос не работает, только при нажатии F8
 
Цитата
ЛКМ на ячейке не ставит и не снимает галку.
Ну, что я могу сказать... У меня работает. Вы код в редакторе видели?
 
Видел я код в редакторе. Мне он как-то должен помочь? Задача несколько другая с checkbox'ами.

Вот это код можно сделать рабочим?
Код
Private Sub CheckBox_Change (ByVal Target As Range)
If CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False Then
 Range("J7") = "Вот это ура!"
 End If
  
' ApplicationEnableEvents = False
  
End Sub
Изменено: Обамка - 29.01.2016 19:19:30
 
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        If .Cells.Count > 1 Then Exit Sub ' Выход, если выделено больше одной ячйки
        If Not Application.Intersect(Range("A2:A10"), Target) Is Nothing Then ' проверяем диапазон
            Application.EnableEvents = False ' отключаем события
            
            If .Value = "ь" Then ' если галка стояла
                .Value = "" ' снимаем галку
                .Offset(, 1).Value = "" ' очищаем ячейку правее
            Else: ' если галка не стояла
                .Value = "ь" ' ставим галку
                
                Select Case .Row ' в зависимости от строки активной ячейки
                Case 2: .Offset(, 1).Value = 0.5 ' заполняем ячейку правее
                Case 3: .Offset(, 1).Value = 0.3
                Case 4: .Offset(, 1).Value = 0.7
                Case 5: .Offset(, 1).Value = "не ничего"
                Case 6: .Offset(, 1).Value = Format(Now, "mm/ss")
                Case 7: .Offset(, 1).Value = 0.5
                Case 8: .Offset(, 1).Value = "мизер"
                Case 9: .Offset(, 1).Value = 0.5
                Case 10: .Offset(, 1).Value = Format(Date, "dd/mm/yy")
                End Select
            End If

            If Application.WorksheetFunction.CountIf(Range("A2:A10"), "ь") = 5 Then ' считаем галки
                Cells(2, 5) = "ура" ' при количестве=5
            Else
                Cells(2, 5) = "не ура" ' если не 5
            End If
            
            .Offset(, 1).Select ' выделяем ячейку правее
            Application.EnableEvents = True ' включаем события
        End If
    End With
End Sub
 
Цитата
Используйте флажок из элементов формы. Связь с ячейкой и проверка состояния ячеек.
Этот тип флажков имеет параметр Элемент_управления-Связь_с_ячейкой
Можно отслеживать значение ячеек.

Цитата
Видел я код в редакторе. Мне он как-то должен помочь? Задача несколько другая с checkbox'ами.
Вам показан аналог. Без объектов. Не нужно заморачиваться, связывать объекты, писать для каждого свою процедуру.
 
Я закрыл две книги. Ваш код заработал. Неплохо. Но меня интересуют ЧекБоксы, понимаете?  
 
Понимаю. Но меня не интересуют.
 
Стоило ли тогда отнимать мое и тратить свое время?  
 
Цитата
Стоило ли... тратить свое время?
Это уже мое дело. Оставил решение если не для Вас , то для других.

Цитата
Стоило ли тогда отнимать мое... время?
То, что Вы у меня время отбираете, создавая тему не по правилам и не желая переименовывать тему - это, конечно, мелочь?
То, что предложил альтернативное решение и оно может пригодиться тем, кто позже зайдет в тему, Вас, конечно, не интересует?

Я Вам  ничем не обязан. Больше Вашего времени отнимать не буду ни в одной из ваших тем. разве только - при нарушении правил.
 
Я подожду того, кто действительно сможет помочь. Есть конкретная задача и она расписана уже несколько раз.  
 
vikttur, спасибо!
очень помогло!
 
Добрый день. Не получается создать новую тему.
Очень нужна помощь. Есть таблица- список, как сделать,чтобы когда ставлю галочку (чекбокс) напротив строчки - данные в этой строчки в таблице заполняли другую таблицу. Т.е. галочкой я делаю выбор какие строчки мне нужны в новой таблице. Т.е. как сделать эту связь при постановки галочки?
 
Цитата
Виктория написал:
Не получается создать новую тему.
В чем проблема?
Страницы: 1
Наверх