Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Программное изменение состояния CheckBox - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Программное изменение состояния CheckBox (Макросы/Sub)
Программное изменение состояния CheckBox
Sashagor1982 Дата: Воскресенье, 07.11.2021, 12:54 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Добрый день, необходимо программно поменять состояние CheckBox, в приложенном файле примере изменение происходит следующим образом
,
т.е. значение серое, для того что бы значение перешло в активный режим необходимо кликнуть на CheckBox

Значение с Value соответственно не меняется, подскажите каким образом поправить код?
К сообщению приложен файл: 5684511.xlsm (183.9 Kb)
 
Ответить
СообщениеДобрый день, необходимо программно поменять состояние CheckBox, в приложенном файле примере изменение происходит следующим образом
,
т.е. значение серое, для того что бы значение перешло в активный режим необходимо кликнуть на CheckBox

Значение с Value соответственно не меняется, подскажите каким образом поправить код?

Автор - Sashagor1982
Дата добавления - 07.11.2021 в 12:54
Pelena Дата: Воскресенье, 07.11.2021, 13:31 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Непонятно, что надо сделать. Чтобы изначально чекбокс был активен? Или чтобы он был снят? Если он должен программно меняться, то в какой момент?

Ответ на вопрос темы:
[vba]
Код
UnArmy = True
UnArmy = False
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНепонятно, что надо сделать. Чтобы изначально чекбокс был активен? Или чтобы он был снят? Если он должен программно меняться, то в какой момент?

Ответ на вопрос темы:
[vba]
Код
UnArmy = True
UnArmy = False
[/vba]

Автор - Pelena
Дата добавления - 07.11.2021 в 13:31
Sashagor1982 Дата: Воскресенье, 07.11.2021, 15:32 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Pelena, Вот в этой части кода программа берет значение из умной таблицы и если стоит "+", то активирует CheckBox, но он почему то активируется серым
[vba]
Код
Call objectControlValues(objControlChecked, "CheckBox_UnArmy", "Юнармия")
[/vba]

[vba]
Код
Private Sub objectControlValues(ByRef objControlChecked As Control, name As String, columnNames As String)
On Error Resume Next
    Dim lineListTable As ListObject
        Set lineListTable = ThisWorkbook.Worksheets("List").ListObjects("tblOrder")
    If (objControlChecked.name = name) Then
        If objControlChecked.Value = "+" Then
            objControlChecked.Value = True
        Else
            objControlChecked.Value = Intersect(mainLine, lineListTable.ListColumns(columnNames).DataBodyRange)
        End If
    End If
On Error GoTo 0
End Sub
[/vba]
 
Ответить
СообщениеPelena, Вот в этой части кода программа берет значение из умной таблицы и если стоит "+", то активирует CheckBox, но он почему то активируется серым
[vba]
Код
Call objectControlValues(objControlChecked, "CheckBox_UnArmy", "Юнармия")
[/vba]

[vba]
Код
Private Sub objectControlValues(ByRef objControlChecked As Control, name As String, columnNames As String)
On Error Resume Next
    Dim lineListTable As ListObject
        Set lineListTable = ThisWorkbook.Worksheets("List").ListObjects("tblOrder")
    If (objControlChecked.name = name) Then
        If objControlChecked.Value = "+" Then
            objControlChecked.Value = True
        Else
            objControlChecked.Value = Intersect(mainLine, lineListTable.ListColumns(columnNames).DataBodyRange)
        End If
    End If
On Error GoTo 0
End Sub
[/vba]

Автор - Sashagor1982
Дата добавления - 07.11.2021 в 15:32
Sashagor1982 Дата: Воскресенье, 07.11.2021, 16:07 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Нашел ошибку
[vba]
Код
If objControlChecked.Value = "+" Then
[/vba]
[vba]
Код
If Intersect(mainLine, lineListTable.ListColumns(columnNames).DataBodyRange) = "+" Then
[/vba]
 
Ответить
СообщениеНашел ошибку
[vba]
Код
If objControlChecked.Value = "+" Then
[/vba]
[vba]
Код
If Intersect(mainLine, lineListTable.ListColumns(columnNames).DataBodyRange) = "+" Then
[/vba]

Автор - Sashagor1982
Дата добавления - 07.11.2021 в 16:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Программное изменение состояния CheckBox (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!