Как сделать галочку в access?

Элементы управления выбора: Выключатель, Переключатель, Флажок и Группа

О предоставлении пользователю возможности выбирать значение из предложенного набора вариантов с помощью элементов управления: флажков, переключателей, выключателей и групп элементов — уже говорилось в гл. 5. Рассмотрим эти элементы управления чуть более подробно. Три типа элементов: выключатели, переключатели и флажки — выполняют одинаковые функции и используются для представления значения логического типа данных. Они могут принимать значения о (Нет) или -1 (Да). Различаются они внешним видом (рис. 9.3).

Рис. 9.3. Элементы управления выбора

В верхней строчке изображены элементы, значения которых равны Да, в следующей строчке — эти же элементы, когда они имеют значение Нет. В третьей строчке изображены переключатель и флажок, когда их значение не определено. Выключатель имеет значение Да, когда он включен, и Нет — когда выключен. Переключатель имеет значение Да, когда он выбран, и Нет — когда не выбран. Флажок имеет значение Да, когда он установлен и Нет — когда сброшен. Если элементы выбора используются для отображения логических данных, хранящихся в поле таблицы, нужно определить для них значения по умолчанию, т. к. в противном случае в новой записи значения этих элементов не будут определены. Значение по умолчанию задается как значение одноименного свойства Значение по умолчанию (Default Value) либо в окне свойств элемента, либо с помощью процедуры VBA, либо с помощью» макроса. Всякий раз, когда пользователь щелкает мышью по элементу выбора, его значение изменяется на противоположное.

Поскольку эти элементы предназначены в первую очередь для улучшения визуального восприятия данных, то предусмотрено несколько вариантов их оформления. Для элемента управления Флажок (CheckBox) эти варианты представлены на рис. 9.4, остальные элементы имеют те же варианты оформления.

Рис. 9.4. Варианты оформления элементов выбора

Элемент управления Группа (Option Group) используется для того, чтобы дать возможность выбрать одно значение из небольшого набора вариантов. Пример групп элементов был приведен на рис. 9.3. Если элементы выбора объединены с помощью элемента управления Группа, то только один из этих элементов может быть выбран пользователем, т. е. получит значение Да.

Если требуется задать несколько независимых признаков, например тип оплаты и способ вывоза товара, необходимо создать несколько независимых элементов выбора или групп.

В одну группу можно объединить элементы выбора даже разных типов, но к полю таблицы присоединяется значение самой группы, а не составляющих ее элементов. Значением группы является уникальное значение, сопоставленное выбранному элементу (обычно это его порядковый номер). Чтобы привязать группу к источнику данных, установите значение свойства Данные (ControlSource) элемента Группа (Option Group). Чтобы выделить элемент Группа, а не элемент управления в группе, нужно щелкнуть по рамке группы. Тогда в диалоговом окне Свойства (Properties) отобразятся свойства группы (рис. 9.5).

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

Элементы управления в группе не должны присоединяться к полям таблицы (в окне свойств для сгруппированных элементов даже не отображается свойство Данные (ControlSource)). Зато для каждого из элементов управления в группе нужно задать то уникальное значение, о котором мы упомянули, чтобы определить значение самой группы, когда данный элемент будет выбран. Делается это с помощью свойства Значение параметра (Option Value), которое должно быть числовым и обязательно уникальным для каждого из элементов управления в группе (рис. 9.6). В приведенном примере заданы следующие значения свойства Значение параметра (Option Value): 1 — Оплачено полностью, 2 — Оплачено частично, 3 — Не оплачено.

Когда пользователь выбирает один из переключателей в группе, значение элемента управления Группа (Option Group) становится равным значению параметра выбранного переключателя. Это значение сохранится в поле таблицы, которое указано в качестве источника данных для группы.

Для размещения элемента управления Группа (Option Group) на форме можно воспользоваться соответствующим мастером. Для демонстрации работы мастера рассмотрим процедуру создания группы, аналогичной представленной на рис. 9.5. Создайте новую форму, открыв ее в режиме Конструктора. Затем выполните следующие действия:

  • Выберите на панели элементов элемент управления Группа (Option Group) и перетащите его на форму (кнопка Мастера (Control Wizards) при этом должна быть нажата). Запустится Мастер группы и появится окно, представленное на рис. 9.7.

Рис. 9.5. Свойства элемента управления Группа

Рис. 9.6. Установка значения параметра переключателя

Рис. 9.7. Первое диалоговое окно Мастера группы

  • В этом окне нужно ввести текст надписей, которые будут размещаться справа от флажков (выключателей или переключателей). Вы можете заполнить эту таблицу так, как это показано на рис. 9.7). Нажмите кнопку Далее (Next). Появится следующее диалоговое окно мастера (рис. 9.8).

Рис. 9.8. Второе диалоговое окно Мастера группы

  • Теперь нужно выбрать тот флажок (выключатель, переключатель), который будет установлен по умолчанию, или указать, что не нужно определять значение по умолчанию. Выберите из списка значение Не оплачено и нажмите кнопку Далее (Next).
  • В следующем диалоговом окне мастера (рис. 9.9) необходимо определить значения для каждого параметра. По умолчанию мастер предлагает возрастающую последовательность чисел: 1, 2, 3. Можете оставить эти значения и просто нажать кнопку Далее (Next).

Рис. 9.9. Третье диалоговое окно Мастера группы

Рис. 9.10. Четвертое диалоговое окно Мастера группы

  • Если данная форма связана с каким-либо источником данных, то есть возможность создаваемую группу привязать к одному из полей в этом источнике данных. В таком случае появится диалоговое окно, представленное на рис. 9.10. В противном случае отобразится окно, представленное на рис. 9.11, и нужно будет перейти сразу к шагу 6. В диалоговом окне, показанном на рис. 9.10, следует выбрать, будет ли создаваемая группа связана с полем источника данных или останется свободным элементом — например, чтобы значение группы было использовано в выражениях в других элементах формы, макросах или процедурах VBA. Чтобы связать группу с полем из источника данных, выберите переключатель Сохранить значение в поле (Store the value in this field) и выберите имя поля в раскрывающемся списке. Если же нужно оставить группу свободной, должен быть выбран переключатель Сохранить значение для дальнейшего применения (Save the value for later use). Нажмите кнопку Далее (Next).
  • Далее предлагается выбрать тип элементов управления в группе: флажки, выключатели или переключатели — и вариант оформления группы (один из пяти вариантов, описанных выше). Выберите тот тип и вариант, которые вам понравятся. Обратите внимание, что слева мастер показывает вам образец выбранного вами варианта (см. рис. 9.11).

Рис. 9.11. Пятое диалоговое окно Мастера группы

  • В последнем диалоговом окне Мастера группы нужно только определить текст надписи, которая будет служить названием группы. В нашем примере требуется ввести название Оплата (рис. 9.12). Теперь нажмите кнопку Готово (Finish), и вы увидите результат работы мастера. У вас должна получиться группа флажков, аналогичная представленной на рис. 9.13.
  • Дальше вы можете реорганизовать эту группу, как вам нравится: например, вытянуть все флажки в одну строку, перенести надписи под флажки и т. д.
Читать еще:  Как сделать печатную форму в access?

Рис. 9.12. Последнее диалоговое окно Мастера группы

Рис. 9.13. Группа флажков, созданная с помощью Мастера группы

Иллюстрированный самоучитель по Microsoft Access 2002

Параметры работы с формами. Основные элементы управления.

При создании новых форм используются параметры, заданные с помощью диалогового окна Параметры (Options). Для отображения окна параметров выберите команду Сервис › Параметры (Tools › Options) и в появившемся диалоговом окне раскройте вкладку Формы и отчеты (Forms/Reports) (рис. 5.12). С помощью этой вкладки можно задать имя существующей формы (в текстовом поле Шаблон формы (Form template)), которая будет использована в качестве образца оформления новых форм, исключая формы, созданные с помощью Мастера форм. Можно также задать способ выделения объектов в форме или отчете, выбрав соответствующий элемент в группе Выделение объектов (Selection behavior), и еще назначить использование по умолчанию процедур VBA для обработки событий форм, элементов управления или отчетов, установив флажок Всегда использовать процедуры обработки событий (Always use event procedure).


Рис. 5.12. Вкладка Формы и отчеты диалогового окна Параметры

Основные элементы управления

В этом разделе мы рассмотрим наиболее простые и часто используемые элементы управления: текстовое поле, надпись, поле со списком, переключатель, выключатель и флажок. Формы с вкладками и многостраничные формы будут подробно рассмотрены в гл. 9.

Чтобы сделать форму более понятной и легко читаемой, в нее добавляют заголовки, подписи или пояснения. Этот текст является неизменяемым и создается с помощью элемента управления Надпись (Label).

Для отображения, ввода или изменения в форме текстовых данных, например примечаний, используют текстовые поля, которые создаются с помощью элемента управления Поле (Text Box).

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

Группа (рис. 5.13) тоже представляет собой элемент управления, который имеет название Группа переключателей (Option group). С каждым элементом управления в группе сопоставляется уникальное число, однозначно определяющее данный элемент в группе, и это число сохраняется в качестве значения свойства Значение (Option Value) элемента управления. Отдельно стоящий элемент управления типа Флажки (Check box), Переключатели (Option button) или Выключатели (Toggle button), не включенный в группу подобных элементов, определяет значение логического типа: Да (Yes) или Нет (No), В данном случае вместо значения Да допускается использовать значение Истина (True) или любое положительное число, а вместо значения Нет – значение Ложь (False) или ноль. Элементы управления Флажки (Check box), Переключатели (Option button), Выключатели (Toggle button) и Группа переключателей (Option group) имеют свойство Значение по умолчанию (Default Value), позволяющее задать первоначальное состояние элемента управления или группы. Для отдельного элемента управления в качестве значения этого свойства используется значение логического типа, а для группы – число, сопоставленное с одним из элементов группы (с тем элементом, который будет выбран в группе по умолчанию).


Рис. 5.13. Отдельные флажки, переключатели, выключатели и группы элементов

Кроме групп элементов, для предоставления выбора значения какого-либо параметра из заданного набора можно использовать элементы управления Список (List Box) или Поле со списком (Combo Box). Ввести значение в поле со списком можно двумя способами: ввести значение в поле или выбрать значение в раскрывающемся списке.

Когда требуется выбрать одно из нескольких возможных значений, пользователю намного удобнее работать со списком или группой элементов, чем с текстовым полем. Во-первых, чтобы сделать выбор, пользователю не нужно вводить значение полностью, а достаточно лишь щелкнуть кнопкой мыши, чтобы выделить нужный элемент. Во-вторых, нет необходимости помнить все допустимые при выборе значения, поскольку они явно перечислены в элементах группы или списка. Поэтому, чтобы сделать интерфейс приложения более удобным для пользователя, используйте в формах группы или списки вместо текстовых полей всегда, когда нужно обеспечить выбор одного из нескольких значений. А также используйте отдельные флажки, выключатели или переключатели вместо текстовых полей, когда требуется предоставить пользователю выбор между альтернативами «да» – «нет» для заданных параметров.

Access! Добавление записей в подчиненную таблицу

1) Подскажите пожалуйста, как организовать добавление n записей (где n — значение поля в форме) в подчиненную таблицу(форму) автоматически (есть формула) при нажатии на кнопку в форме.

2) Как при включении флажка (лог. поле в таблице) сделать всю запись нередактируемой?

3) Если в меню Access Add-Ins нет packaging Wizard, значит не сделать независимого приложения или?

19 ответов

Способов масса:
1. через DoCmd:
‘ переводим фокус в подч. форму (нак какой-нибудь элем.)
‘ делается это в 2 этапа
Forms![Главн_форма]![Подч_форма].SetFocus
Forms![Главн_форма]![Подч_форма].Form![Имя_Контрол].SetFocus
DoCmd.GoToRecord ,,acNewRec
‘ заполняем поля в новой записи и повторяем все дальше

Dim dbs As Database, rst As Recordset, rstClone As Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(«Таблица1», dbOpenDynaset)
With rst
.AddNew
!Поле1 = «ля-ля»
!Поле2 = «ля-ля»
.Update
End With

‘ обновление формы и переход на последнюю запись
Forms![Главн_форма].Requery
Set rstClone = Forms![Главн_форма].RecordsetClone
rstClone.MoveLast
Forms![Главн_форма].Bookmark = rstClone.Bookmark

rst.Close
rstClone.Close
Set dbs = Nothing

3. Практически также через ADO (только название методов чуть другие)

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

Dim dbs As Database, strSQL as String

On Error GoTo Err_Execute
Set dbs = CurrentDb
strSQL=»INSERT INTO Таблица1( Поле1 ) » _
«SELECT Таблица2.Поле1 » _
«FROM Таблица2 » _
«GROUP BY Таблица2.Поле1 » _
«HAVING Таблица2.Поле1)=’aaaa'»

Exit_:
Set dbs = Nothing
Exit sub ‘ или Function

Err_Execute:
MsgBox «Error number: » & Err.Number & vbCr & Err.Description
Resume Exit_

Я так понимаю, что необх. запретить редактировать запись в форме:
Me.AllowEdits=False
это же свойство можно сразу установить в совйствах формы (в рус. Access: Данные->Разрешить изменение)

Можно еще открывать набор записей в форме не как динамический набор(по умолч.), а как статический набор.

Не знаю не использовал, но если его нет, то естественно сделать ничего нельзя. А зачем это? все равно твоя база будет только через Access работать, тайно или явно.
Может я конечно ошибаюсь, но что-то я не видел, чтобы базу на Access можно было так упаковать, чтобы таскать потом ее как отдельное приложение (это надо ядро засунуть туда, все библиотеки, тот еще монстр будет.. 🙂 )

Спасибо, что откликнулись, только у меня ничего не получилось. ( На данную строку Set dbs = CurrentDb сваливается ошибка о несоответствии типа (используя модель ДАО). А функцию OpenRecordset вообще не находит..(( В Tools->Referens поставлена галочка напротив Microsoft DAO 3.6 Object Library, а в object браузере функция находится. В чем тут может быть дело? Или может избрать другой путь решения? Если можно, напишите более подробно как решить такую задачу:

Читать еще:  Как сделать размер поля в access?

Необходимо добавить в подчиненную таблицу Col — количество (значение поля в главной форме) записей такого вида:

for i=1 to Col
[подчин. форма]!pdУник.=[главн. форма]!glУникПоле
[подчин. форма]!pdНомерПП = i
[подчин. форма]!pdДата1 = DateAdd(«m»,i,»[главн. форма]!glДата»)
[подчин. форма]!pdПоле3= [главн. форма]!glПоле00/[главн. форма]!glПоле01
.
[подчин. форма]!pdПоле6 = еще что-нибудь зависящее от i
next i

И еще, поподробнее насчет «галочки». Лог. поле есть в подчиненной таблице. По умолчанию — это поле равно False, но когда пользователь ставит галку, вся запись должна стать нередактируемой, вроде как ОТМЕЧЕНО/ОПЛАЧЕНО и боле не пригодится, но НЕ ВСЕ ЗАПИСИ в таблице, а только одна.

Спасибо.
PS: про самостоятельное приложение вычитала в книге, и вообще я только начинающий специалист, не судите строго. )))

Originally posted by natalia
Спасибо, что откликнулись, только у меня ничего не получилось. ( На данную строку Set dbs = CurrentDb сваливается ошибка о несоответствии типа (используя модель ДАО). А функцию OpenRecordset вообще не находит..(( В Tools->Referens поставлена галочка напротив Microsoft DAO 3.6 Object Library, а в object браузере функция находится. В чем тут может быть дело? Или может избрать другой путь решения? Если можно, напишите более подробно как решить такую задачу:

Необходимо добавить в подчиненную таблицу Col — количество (значение поля в главной форме) записей такого вида:

for i=1 to Col
[подчин. форма]!pdУник.=[главн. форма]!glУникПоле
[подчин. форма]!pdНомерПП = i
[подчин. форма]!pdДата1 = DateAdd(«m»,i,»[главн. форма]!glДата»)
[подчин. форма]!pdПоле3= [главн. форма]!glПоле00/[главн. форма]!glПоле01
.
[подчин. форма]!pdПоле6 = еще что-нибудь зависящее от i
next i

И еще, поподробнее насчет «галочки». Лог. поле есть в подчиненной таблице. По умолчанию — это поле равно False, но когда пользователь ставит галку, вся запись должна стать нередактируемой, вроде как ОТМЕЧЕНО/ОПЛАЧЕНО и боле не пригодится, но НЕ ВСЕ ЗАПИСИ в таблице, а только одна.

Спасибо.
PS: про самостоятельное приложение вычитала в книге, и вообще я только начинающий специалист, не судите строго. )))

Если бы мне надо было бы это сделать, то я пошел бы через DAO (хоть друг Билл и товарищ Гетц и призывает переходить на ADO, но DAO пока роднее). Но тут для тебя важна сама суть, а она такая же, что в DAO, что в ADO, а переписать не проблема.
Значит так это выглядит:

Dim dbs As DAO.Database, rst As DAO.Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(«Таблица1», dbOpenDynaset)
for i=1 to Col
With rst
.AddNew
!pdУник = Forms![главн. форма]!glУникПоле
!pdНомерПП = i
.
.Update
End With
Next i

rst.Close
rstClone.Close
Set dbs = Nothing

По поводу ругани на CurrentDb, давай разбираться. Значит говоришь Microsoft DAO 3.6 Object Library подключено — это хорошо. Тут может быть конфликт имен, это когда в разных библиотеках используют одинаковые имена объектов или методов, поэтому давай с тобой объявим переменные с указанием полного пути (в смысле всех родителей): DAO.Database и DAO.Recordset — так должно все сработать (конфликт может быть с одной из библиотек ADO), если не получится, пиши, подумаем. 🙂

Насчет галочки: Вопрос такой, как ты записи выводишь, через обычную форму или ленточную/табличную?

В первом случае пользователь видит только одну запись, ее мы блокируем (в пред. посте), при переходе на другую запись, проверяем и снимаем/устан. блокировку.

Во втором случае, можно работать также, при переходе к другой записи, в событии Current делаем проверку и опред. блокировать ли тек. запись или нет. В принципе также можно блокировать не всю запись, а только отд. поля (у них тоже есть свойства Доступ и Блокировка)

Получилось! Получилось! Спасибо! Вот только не с первого разу, вот это то я и упустила (дура глупая):

Forms![гл. форма].Requery
Set rstClone = Forms![гл. форма].RecordsetClone
rstClone.MoveLast
Forms![гл. форма].Bookmark = rstClone.Bookmark

и тут же вопрос — это дело я вставила в цикл до next i, может неправильно, а? А то записи ТО правильно добавляются, ТО их больше в два раза от того, что уникальное поле запоминается из предыдущей записи.. странно как-то. Подскажите этот момент поподробнее и эту часть кода, что она выполняет? Что за RecordsetClone? :)))

——
С галочкой я так поступаю, может вовсе некорректно:

Private Sub flag_Click()
If flag=True Then
Form_podForm1.pddate.Enabled = False
Else
Form_podForm1.pddate.Enabled = True
End If
End Sub

в итоге во ВСЕХ записях поле pddate становится недоступным. Как же сделать это Enabled только для той записи, в которой я ставлю галочку?

Простите, что повторяюсь с вопросами, хочу разобраться, и немного туплю.. Но я стараюсь..))))
Спасибо. Жду.

Originally posted by natalia
Получилось! Получилось! Спасибо! Вот только не с первого разу, вот это то я и упустила (дура глупая):

Forms![гл. форма].Requery
Set rstClone = Forms![гл. форма].RecordsetClone
rstClone.MoveLast
Forms![гл. форма].Bookmark = rstClone.Bookmark

и тут же вопрос — это дело я вставила в цикл до next i, может неправильно, а? А то записи ТО правильно добавляются, ТО их больше в два раза от того, что уникальное поле запоминается из предыдущей записи.. странно как-то. Подскажите этот момент поподробнее и эту часть кода, что она выполняет? Что за RecordsetClone? :)))

Этот кусок кода я опустил в последнем примере, потому как подумал, что для твоей ситуации он не очень критичен.

А смысл его вот какой:

Когда ты обращаешься к таблице программно напрямую (через DAO, ADO и т.д.), а в это же время эта таблица показывается в форме, то все твои изменения в таблице не будут отображены, пока ты принудительно не заставишь Access обновить выводимую таблицу в форме через метод формы — Requery.

Т.е. в твоем случае надо в конце написать:
Forms![Гл_форма]]![Подч_форма].Form.Requery

И вот тут одна нехорошая такая вещь после этого происходит — записи загружаются заново и по умолчанию фокус устанавл. на первую запись. Т.е. ты добавил записи и после этого ты попадаешь на начало. Чтобы не заставлять пользователя вручную возвращаться, можно сразу добавить такой код:
DoCmd.GoToRecord ,,acLast

Но у этого метода такой недостаток, чтобы так написать, надо (ОБЯЗАТЕЛЬНО) перевести фокус на элемент (любой) этой подчин. формы., т.е. в итоге:

Forms![Гл_форма]]![Подч_форма].Form.Requery
Forms![Главн_форма]![Подч_форма].SetFocus
Forms![Главн_форма]![Подч_форма].Form![Имя_Контрол].SetFocus
DoCmd.GoToRecord ,,acLast

Тебе такой вариант может подойти.

Но вот существуют ситуации когда переводить фокус на форму ради этого действия очень не хочется.
Например: пользователь работает с одной подч. формой (главный экран), нажимает кнопки, обрабатывает что-то, а на этой же форме, но на другой вкладке другая подчин. форма где ведется лог. И вот в этот лог надо добавить запись и перейти в конец (на последнюю запись, чтобы опять же не прокручивать всю эту форму).
Если мы будем действовать по приведенному выше коду, то у пользователя быстро переключится вид на форму с логом, добавиться запись, обновиться, перескочет на последнюю и только потом его бедного опять вернут к своей любимой форме. 🙂
Приятного мало.

Читать еще:  Как сделать диаграмму в access?

Подитожу. Процесс добавления записей и Requery можно производить с неактивной (ее вообще может быть не видно) формой, а вот для того что перейти в этой НЕАКТИВНОЙ форме на последнюю запись, я и применяю этот код:
Set rstClone = Forms![Главн_форма].RecordsetClone
rstClone.MoveLast
Forms![Главн_форма].Bookmark = RecordsetClone.Bookmark

Делает он следующее.
У каждой формы есть свойство RecordsetClone, которое возвращает объект Recordset (набор записей, про него в справке лучше почитай), в котором находятся записи этой формы. По сути Recordset эта таже таблица, только в виде объекта DAO для того чтобы можно было делать всякие вещи с полями и записями как с обычными объектами в языках программирования.
В этом rstClone мы по умолчанию стоим на первой записе. Переходим на последнюю — rstClone.MoveLast
Теперь используем свойство Bookmark — закладка. Эта Bookmark для того, чтобы можно было поставить закладку, а потом быстро вернуться на нужную запись в Recordset или в форме (она тоже поддерживает закладки). Вот и мы и переходим в форме на ту же запись, что уже перешли в объекте RecordsetClone.

Это свойство Bookmark может немного смутить. У него такая хитрость:
Когда мы обращаемся (ЧИТАЕМ) к свойству -RecordsetClone.Bookmark — то оно возвращает закладку на активную запись в объекте RecordsetClone. Мы например, можем эту закладку сохранить в отд. переменной:
Dim bk as Bookmark
Set bk=RecordsetClone.Bookmark
и потом ее использовать где-нибудь дальше.

А вот когда мы присваиваем (ПИШЕМ) этому свойству RecordsetClone.Bookmark = bk другую закладку, это значит, мы меняем активную запись на ту, которая была активна, когда считывалась эта закладка (bk), т.е. просто переходим на указанную запись.
В нашем примере эти два действия сразу в одной строке получились:
Forms![Главн_форма].Bookmark = RecordsetClone.Bookmark

——
С галочкой я так поступаю, может вовсе некорректно:

Private Sub flag_Click()
If flag=True Then
Form_podForm1.pddate.Enabled = False
Else
Form_podForm1.pddate.Enabled = True
End If
End Sub

в итоге во ВСЕХ записях поле pddate становится недоступным. Как же сделать это Enabled только для той записи, в которой я ставлю галочку?

А оно и будет заблокировано во всех выводимых записях, но так пользователь не может работать сразу с несколькими, а только с одной, то как только он будет переходить к следующей записи, мы будем решать: блокировать ее или нет.

К твоему коду, надо добавить еще код обработчик событии формы Current (возникает при ЛЮБОМ переходе польз. к другой записе):

Private Sub Form_Current()
If flag=True Then
Form_podForm1.pddate.Enabled = False
Else
Form_podForm1.pddate.Enabled = True
End If
End Sub

Так что мы всегда его опередим и пользователь от нас не уйдет 🙂

Флажок — элемент управления формы в MS EXCEL

Флажок возвращает ИСТИНА (если Флажок установлен) или ЛОЖЬ (если Флажок снят).

Для вставки элементов управления на лист необходимо отобразить вкладку Разработчик.

  • В MS EXCEL 2007 это можно сделать через меню Кнопка офис/ Параметры Excel/ Основные/ Показывать вкладку Разработчик на ленте .
  • В MS EXCEL 2010 это можно сделать так: Откройте вкладку Файл; Нажмите кнопку Параметры; Нажмите кнопку Настроить ленту; Выберите команду Настройка ленты и в разделе Основные вкладки установите флажок Разработчик.

Теперь вставить элемент управления можно через меню: Разработчик/ Элементы управления/ Вставить.

Обратите внимание, что в этом меню можно также вставить Элементы ActiveX, которые расположены ниже интересующих нас Элементов управления формы. У обоих типов есть одни и те же элементы Кнопка, Список, Флажок и т.п. Разница между ними следующая: чтобы использовать Элементы ActiveX необходимо использовать VBA, а Элементы управления формы можно напрямую привязать к ячейке на листе.

Флажок (Checkbox) как, впрочем и все другие Элементы управления формы, возвращает только 1 числовое значение. Если Флажок установлен, то он возвращает ИСТИНА, если Флажок снят — то ЛОЖЬ. См. файл примера лист Флажок .

Обзорную статью об элементах управления формы можно прочитать здесь.

Вставка Флажка

Через меню Разработчик/ Элементы управления/ Вставить выберем левой клавишей мыши элемент Флажок.

После этого выпадающее меню закроется, а курсор вместо обычного толстого крестика

превратится в тонкий крестик.

Выберите место на листе куда нужно вставить Флажок и нажмите левую клавишу мыши. На месте курсора будет установлен левый верхний угол прямоугольника, в котором содержится Флажок и его надпись. Граница прямоугольника будет выделена.

Выделение Флажка

После вставки Флажка он становится выделенным (см. рисунок выше). Если кликнуть в любом другом месте листа, то Флажок перестанет быть выделенным. Чтобы снова его выделить нужно кликнуть его ПРАВОЙ клавишей мыши (клик ЛЕВОЙ клавиши устанавливает или снимает Флажок). После клика правой кнопкой также появляется контекстное меню, чтобы его убрать можно нажать ESC или кликнуть левой клавишей по Флажку.

Перемещение Флажка и изменение его размеров

Если навести курсор на выделенный прямоугольник Флажка (курсор примет форму 4-х направленных в разные стороны стрелок, см. рисунок выше), затем нажать и удерживать левую кнопку мыши, то можно переместить Флажок. Удерживая клавишу ALT можно выровнять Флажок по границам ячеек. Выделенный Флажок также можно перемещать стрелками с клавиатуры.

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

Связываем Флажок с ячейкой

Как было сказано выше, все Элементы управления формы возвращают значение. Это значение помещается в ячейку определенную пользователем. Чтобы связать Элемент управления с ячейкой, кликните на него ПРАВОЙ клавишей мыши, в появившемся контекстном меню выберите Формат объекта.

Появится диалоговое окно, выберите вкладку Элемент управления (если такая вкладка отсутствует, то Вы вставили Элемент ActiveX, а не Элемент управления формы, об этом см. выше).

В поле Связь с ячейкой нужно ввести ссылку на ячейку. Свяжем наш Флажок с ячейкой А1.

Нажмите ОК. Убедитесь, что Флажок не выделен. Пощелкайте левой клавишей мыши по Флажку. В ячейке А1 значение будет меняться с ИСТИНА на ЛОЖЬ и наоборот.

Существует другой способ связать Элемент управления и ячейку: Выделите правой клавишей мыши Элемент управления, в Строке формул введите =, затем кликните левой клавишей мыши на нужную ячейку и нажмите клавишу ENTER.

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

Одну ячейку можно связать с несколькими элементами управления, но имеет ли это смысл? Решать Вам.

Изменяем внешний вид Флажка

Чтобы изменить внешний вид Флажка, кликните на него ПРАВОЙ клавишей мыши, в появившемся контекстном меню выберите Формат объекта. Появится диалоговое окно, выберите вкладку Цвета и линии.

После несложной настройки можно сотворить вот такое чудо с Вашим Флажком.

Ссылка на основную публикацию
Adblock
detector