Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2013, 17:02   #1
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию Как сделать по умолчанию неактивный checkbox?

Вопрос, собственно в заголовке. Как сделать по умолчанию неактивный checkbox?
Lamo вне форума Ответить с цитированием
Старый 26.07.2013, 08:10   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

У формы есть событие Initialization и в нем применяются начальные установки объектов. Для книги лучше использовать событие Open.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 26.07.2013, 11:38   #3
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

Хочу сделать следующее, если значение столбца активной ячейки равно номеру столбца, к которому привязан чекбокс, то чекбокс должен быть неактивным.
При использовании следующего кода чекбокс в состоянии без галочки активен, а если выставить галочку, уже не активен:
Код HTML:
Private Sub CheckBox9_Click()
If ActiveCell.Column = 16 Then
CheckBox9.Enabled = False
Else
CheckBox9.Enabled = True
End If
End Sub
А я хочу сделать так, чтобы если значение столбца активной ячейки равно номеру столбца, к которому привязан чекбокс, то чекбокс должен быть неактивным уже сначала, без возможности выставить в нем галочку.
Lamo вне форума Ответить с цитированием
Старый 26.07.2013, 12:12   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  CheckBox9.Enabled = (ActiveCell.Column <> "НомерСтолбцаСоответствующегоЧекбокса")
End Sub
где вместо "НомерСтолбцаСоответствующегоЧекбок са" подставляете своё значение.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 26.07.2013, 12:31   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Lamo, Вы затеяли нечто, что лишено логики.
установив CheckBox9.Enabled = False, процедура Private Sub CheckBox9_Click() уже никогда не сработает, ничего не проверит и не переназначит, потому что чекбокс больше недоступен (неактивен).
разрешить/запретить использование чекбокса видимо надо по событию листа
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
...
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.07.2013, 12:37   #6
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

[QUOTE=IgorGO;1257222]Lamo, Вы затеяли нечто, что лишено логики.
установив CheckBox9.Enabled = False, процедура Private Sub CheckBox9_Click() уже никогда не сработает, ничего не проверит и не переназначит, потому что чекбокс больше недоступен (неактивен).
разрешить/запретить использование чекбокса видимо надо по событию листа


Да, есть такое))). Нельзя ли поподробнее расписать про:
Цитата:
Сообщение от IgorGO Посмотреть сообщение
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
...
End Sub
Просто решил ускорить работу, позавчера начал изучать VBA. Не успел еще выучить синтаксис.))
Lamo вне форума Ответить с цитированием
Старый 26.07.2013, 12:49   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
позавчера начал изучать VBA
это кое-что обьясняет
Цитата:
номеру столбца, к которому привязан чекбокс
что Вы подразумеваете под этой фразой?
это столбец, в котором расположен левый край чекбокса
или
номер столбца ячейки, в которую чекбокс передает свое состояние?

как пользоваться Private Sub Worksheet_SelectionChange, вам показал DiemonStar, в его примере замените "НомерСтолбцаСоответствующегоЧекбок са" на необхомую переменную и все заработает.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.07.2013, 13:11   #8
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

У меня чекбокс находится в юзерформе, он должен быть привязан к столбцу, в котором будем производиться поиск по значению. (Это уже другая тема.)
Если значение активной ячейки совпадает с номером столбца, то чекбокс должен быть выключен в форме юзера если мы вызвали окно макроса.
То есть блокируем столбец для поиска, если столбец и активная ячейка совпадают по столбцу.



По коду DiemonStar-а

Цитата:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckBox9.Enabled = (ActiveCell.Column <> "НомерСтолбцаСоответствующегоЧекбок са")
End Sub
Чекбокс все равно активен при вызове юзерформы, то есть я могу выставить галочку. После выставления галочки, чекбокс неактивен.

А хотелось бы, чтобы если значение столбца активной ячейки равно номеру столбца,
к которому привязан чекбокс, то чекбокс должен быть неактивным уже сначала, без возможности выставить в нем галочку.

Когда положение столбца активной ячейки не равно столбцу чекбокса:



Когда положение столбца активной ячейки равно столбцу чекбокса:



Вот, как такое можно реализовать?
Lamo вне форума Ответить с цитированием
Старый 26.07.2013, 13:21   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Проверяется столбец 4

Код:
Private Sub UserForm_Activate()
CheckBox1.Enabled = ActiveCell.Column <> 4
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 26.07.2013, 15:25   #10
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Проверяется столбец 4

Код:
Private Sub UserForm_Activate()
CheckBox1.Enabled = ActiveCell.Column <> 4
End Sub
Спасибо, doober, работает. IgorGO и DiemonStar также большое спасибо за помощь!

Заделал следующим образом:
Код:
Private Sub UserForm_Activate()
CheckBox1.Enabled = ActiveCell.Column <> 2
CheckBox2.Enabled = ActiveCell.Column <> 3
CheckBox3.Enabled = ActiveCell.Column <> 4
CheckBox4.Enabled = ActiveCell.Column <> 5
CheckBox5.Enabled = ActiveCell.Column <> 13
CheckBox6.Enabled = ActiveCell.Column <> 14
CheckBox7.Enabled = ActiveCell.Column <> 21
CheckBox8.Enabled = ActiveCell.Column <> 15
CheckBox9.Enabled = ActiveCell.Column <> 16
CheckBox10.Enabled = ActiveCell.Column <> 19
End Sub
Теперь надо прикрутить к каждому чекбоксу свой столбец. Но это уже совсем другая история...
Lamo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать печать по умолчанию текущая страница? alevtina07 Microsoft Office Word 4 18.11.2010 08:09
как OptionButton сделать не доступними несколько CheckBox-ов mars56 Microsoft Office Excel 14 20.01.2010 14:27
CodeGear. Как сделать, что бы dproj по умолчанию открывалось через Delphi, а не через всю студию? TwiX Общие вопросы Delphi 2 10.11.2009 22:24
Как сделать checkbox случайным? Serg-Grin Общие вопросы Delphi 9 20.10.2009 21:49
Как сделать что бы по умолчанию открывалось подменю? gothic1305 HTML и CSS 3 15.09.2009 20:39