Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как прочитать стоит ли галочка в checkbox или нет?
 
Как прочитать в коде стоит ли галочка в checkbox или нет?
Checkbox который на листе, как во вложении.
Работать надо не 12 часов, а головой.
 
Код
Sub checkbox1()
    Dim bChecked As Boolean
    bChecked = (ActiveSheet.Shapes("Флажок 1").OLEFormat.Object.Value = 1)
    MsgBox "checkbox в состоянии: " & bChecked
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
MsgBox Лист3.CheckBoxes(1).Value
 
bChecked = (ActiveSheet.Shapes("Флажок 1").OLEFormat.Object.Value = 1)
у меня вот эта строка красным почему то выдает и со скобками и без скобок.
не хочет работать (
Работать надо не 12 часов, а головой.
 
Цитата
МашА пишет:
Код
 MsgBox Лист3.CheckBoxes(1).Value 
Результат -4146  :)
Изменено: Johny - 17 Янв 2013 16:58:01
There is no knowledge that is not power
 
Попробуй мой вариант
 
Если галочка стоит, то 1, если нет, то -4146
Изменено: МашА - 17 Янв 2013 16:57:32
 
Да и Ваш вариант, МашА, будет красным.

Leanna - удалите пробел перед Value. Это особенности форума - вставляет его всегда.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вот так лучше:

Код
MsgBox Лист3.CheckBoxes(1).Value And 1
There is no knowledge that is not power
 
МашА
Я понимаю, что всё, что не 0, это True, но True = -1 в VBA, поэтому нельзя сконвертировать -4146 в True.
There is no knowledge that is not power
 
Усложним
Код
If Лист3.CheckBoxes(1).Value < 0 Then MsgBox "0" Else MsgBox Лист3.CheckBoxes(1).Value


Вместо (1) ставь индекс нужного чекбокса. или перебором или методом excel'ского тыка!
Изменено: МашА - 17 Янв 2013 17:01:28
 
Если честно не люблю использовать подобное указание объекта: Лист3.CheckBoxes(1)

Никогда не знаешь какой объект по индексу первый, какой третий и т.д. И просматривать код и выискивать ошибки потом не очень удобно, если таких флажков пара десятков.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Leanna пишет:
bChecked = (ActiveSheet.Shapes("Флажок 1" ;) .OLEFormat.Object.Value = 1)
у меня вот эта строка красным почему то выдает и со скобками и без скобок.
Потому что если включить "Auto Syntax Check", то и описание ошибки появится: "Invalid character" (что в переводе "Неверный символ" ;) .  :)
Изменено: Johny - 17 Янв 2013 17:04:04
There is no knowledge that is not power
 
Цитата
The_Prist пишет:
Если честно не люблю использовать подобное указание объекта: Лист3.CheckBoxes(1)

Никогда не знаешь какой объект по индексу первый, какой третий и т.д. И просматривать код и выискивать ошибки потом не очень удобно, если таких флажков пара десятков.

Согласна с Вами! Но вариант у меня работает.

Чекбоксов 6 и поэтому при написании кода путаницы не было.

Если 100 шт. на листе, то проблема.

Но если много, то лучше вообще уйти на Userform на мой взгляд, там проще обрабатывать объекты и вес файла не будет такой большой как с элементами ActiveX
 
Вообще-то все зависит от конечной цели.
Так например, если таких чеков в книге много и по всем им надо проводить какие-нибудь логические операции, то возможно лучше связать каждый чек с конкретной ячейкой, а затем анализировать только значения этих ячеек.
Да и имен чеков не надо знать.
Или использовать чек их ActiveX
Вариантов много
 
Цитата
МашА пишет:
Усложним
Код
 If Лист3.CheckBoxes(1).Value < 0 Then MsgBox "0" Else MsgBox Лист3.CheckBoxes(1).Value 
Имхо, так логичней:
Код
If Лист3.CheckBoxes(1).Value < 0 Then MsgBox 0 Else MsgBox 1

:)
There is no knowledge that is not power
 
The_Prist удалила все равно по прежнему он ругается на invalid character, что это может быть?

Скобки должны обязательно присутствовать? Я такого раньше не встречала.
Работать надо не 12 часов, а головой.
 
Leanna, а мой код пробовали?
Код
MsgBox Лист3.CheckBoxes(1).Value And 1
There is no knowledge that is not power
 
Картинка так выглядит

Пробела пере Value нет..
Работать надо не 12 часов, а головой.
 
Цитата
Johny пишет:
Цитата
МашА пишет:
Усложним
Код
  If Лист3.CheckBoxes(1).Value < 0 Then MsgBox "0" Else MsgBox Лист3.CheckBoxes(1).Value  
Имхо, так логичней:
Код
 If Лист3.CheckBoxes(1).Value < 0 Then MsgBox 0 Else MsgBox 1
 

:)

C женской точки зрения нет    :oops:
 
МашА то же красные строки...
_________________________
Работать надо не 12 часов, а головой.
 
В принципе проблема лечится, если поставить курсор в конец строки и удалить .Value. Тогда этот невидимый символ удаляется. на всякий случай файл с кодом.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Leanna пишет:
МашА то же красные строки...
_________________________
 

См вложение, у меня всё работает!
 
МашА - да у всех все работает :-) Вопрос в том, что при копировании с форума в код внедряется некий символ, который несколько сбивает работу VBA и не всегда хочет удаляться простым удалением.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, МашА спасибо большое за помощь!

воспользовлась в итоге методом The_Prist

Может при копировании что то не так с русскими буквами... поэтому у меня глючило.
Работать надо не 12 часов, а головой.
Страницы: 1
Читают тему (гостей: 1)