Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/32: Рейтинг темы: голосов - 32, средняя оценка - 4.91
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208

Присвоение одного значения множеству ячеек в VBA

09.11.2012, 20:00. Показов 6525. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста как можно прописать следующие действия покороче
Visual Basic
1
Me.Д1_1 = 0: Me.Д1_2 = 0: Me.Д1_3 = 0: Me.Д1_4с = 0: Me.Д1_4ц = 0: Me.Д1_4т = 0: Me.Д1_4п = 0: Me.Д1_5э = 0:
Visual Basic
1
[VB]Me.Д1_1.Enabled = True: Me.Д1_2.Enabled = True: Me.Д1_3.Enabled = True: Me.Д1_4с.Enabled = True: Me.Д1_4ц.Enabled = True: Me.Д1_4т.Enabled = True: Me.Д1_4п.Enabled = True: Me.Д1_5э.Enabled = True:
[/VB]

Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2012, 20:00
Ответы с готовыми решениями:

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

Присвоение одного значения ряду переменных
ошибку выдает, а так-то очень удобно было-бы, там их штук 5 сразу обнулять надо, хочется в одной строке. i,c,c1:=0;

Присвоение одного значения нескольким переменным сразу
Всем привет! Подскажите, пожалуйста. Такая проблема: есть несколько переменных, и одно значение, актуальное для них всех. Можно ли одной...

28
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
09.11.2012, 20:02
через цикл
1
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 20:04  [ТС]
Цитата Сообщение от sekonya Посмотреть сообщение
через цикл
Спасибо, а как это будет выглядеть
Visual Basic
1
Do   ... LOOP
,да?
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
09.11.2012, 20:07
мне ближе
for i=1 to "колво полей"
me("поле" & i) = 0
next
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.11.2012, 20:22
К сожалению, показанные имена полей не обладают достаточными признаками регулярности для того, чтобы можно было одним коротким условием перечислить все контролы.

Но может быть достаточно будет обнулить все текстбоксы, а всем чекбоксам присвоить True? Это легко.
0
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 20:22  [ТС]
Цитата Сообщение от sekonya Посмотреть сообщение
мне ближе
for i=1 to "колво полей"
me("поле" & i) = 0
next
Кажется чуть-чуть понимаю процесс: вот так нужно указывать поля. "*" потому что в некоторых названиях есть буквы (например Д1_4п, Д1_4с)
me("Д1_" & i & "*") = 0
и
me("Д1_" & i & "*").Enabled = true
Попробовать так прописать?
Правильно, да?
0
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
09.11.2012, 20:25
В вашем случае можно ещё, например, так:
Visual Basic
1
2
3
4
5
6
Dim ctl As Control
For Each ctl In Me.Controls
  If Left(ctl.Name, 3)="Д1_" Then
    ctl.Value =...
  End If
Next ctl
1
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 21:00  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
К сожалению, показанные имена полей не обладают достаточными признаками регулярности для того, чтобы можно было одним коротким условием перечислить все контролы.

Но может быть достаточно будет обнулить все текстбоксы, а всем чекбоксам присвоить True? Это легко.
А как это разом сделать и что такое чекбокс

Добавлено через 35 минут
Цитата Сообщение от Андрэич Посмотреть сообщение
В вашем случае можно ещё, например, так:
Visual Basic
1
2
3
4
5
6
Dim ctl As Control
For Each ctl In Me.Controls
  If Left(ctl.Name, 3)="Д1_" Then
    ctl.Value =...
  End If
Next ctl
Выдает ошибку "Невозможно присвоить значение объекту" ctl.Value = "0"
Visual Basic
1
2
3
4
5
6
Dim ctl As Control
For Each ctl In Me.Controls
  If Left(ctl.Name, 3) = "Д1_" Then
  ctl.Value = "0"
      End If
Next ctl
Что то не так?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.11.2012, 21:13
Цитата Сообщение от u_tarvo Посмотреть сообщение
А как это разом сделать и что такое чекбокс
Скажем, такой код на кнопке
Visual Basic
1
2
3
4
5
Dim c As Control
For Each c In Me.Controls
    If TypeName(c) = "Textbox" Then Me(c.Name) = 0
    If TypeName(c) = "Checkbox" Then Me(c.Name) = True
Next
Чекбокс это флажок
2
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
09.11.2012, 21:29
Цитата Сообщение от u_tarvo Посмотреть сообщение
Выдает ошибку "Невозможно присвоить значение объекту" ctl.Value = "0"
Visual Basic
1
2
3
4
5
6
Dim ctl As Control
For Each ctl In Me.Controls
  If Left(ctl.Name, 3) = "Д1_" Then
  ctl.Value = "0"
      End If
Next ctl
Что то не так?
Ошибка, что называется, фундаментальная. Связана она с типом данных.
Если тип данных текстовый - значение должно быть заключено в кавычки, если числовой - то нет. Для полей логического типа, помимо системных констант True и False, допускается также присваивать числовые значения: Да - это -1, Нет - 0 (но не "-1" и "0") :-)
1
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 21:56  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Скажем, такой код на кнопке
Visual Basic
1
2
3
4
5
Dim c As Control
For Each c In Me.Controls
    If TypeName(c) = "Textbox" Then Me(c.Name) = 0
    If TypeName(c) = "Checkbox" Then Me(c.Name) = True
Next
Чекбокс это флажок
Аналогичная ошибка с тектбоксом "Невозможно присвоить значение объекту"
А с чекбоксом - получается.
Андреич, "Ошибка, что называется, фундаментальная. Связана она с типом данных.
Если тип данных текстовый - значение должно быть заключено в кавычки, если числовой - то нет. Для полей логического типа, помимо системных констант True и False, допускается также присваивать числовые значения: Да - это -1, Нет - 0 (но не "-1" и "0") :-) "
я так и думал, пробовал разные вариант и 0 и "0", все равно ошибка, формат поля - числовой.
Я думаю доделать вариант, предложенный sekonya:
как правильно обозначить поле Д1_iх, где "i" от 0 до 9, а "х" или отсутствует или любая буква
Попробовал me("Д1_" & i & "*") = 0, выдает ошибку "me.Д1_0* не найден"
Как правильно записать?
Спасибо!
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
09.11.2012, 22:00
проверьте какой у вас тип данны
1
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 22:16  [ТС]
Цитата Сообщение от sekonya Посмотреть сообщение
проверьте какой у вас тип данны
числовой
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
09.11.2012, 22:18
во всех полях формы?
1
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.11.2012, 22:22
Цитата Сообщение от u_tarvo Посмотреть сообщение
Аналогичная ошибка с тектбоксом "Невозможно присвоить значение объекту"
А с чекбоксом - получается.
Мы, конечно, так долго можем соревноваться в гадаловке

Мое очередное предположение - текстовые поля, или некоторые из них, это вычисляемые поля с источником в виде выражения. Конечно им ничего не присвоить.

Если и сейчас ошибка, то выставляйте сюда свою базу, будем разбираться
1
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 22:31  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Если и сейчас ошибка, то выставляйте сюда свою базу, будем разбираться
Спасибо большое!
вопрос возникает в форме "Ввод данных", которая завязана с таблицей "База_ввод_данных"
Вложения
Тип файла: rar Система.rar (909.0 Кб, 15 просмотров)
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
09.11.2012, 22:38
Почему бы не задать эти значений для полей формы, как значения по умолчанию?
Тогда они будут:
1. Автоматически подставляться в новую запись.
2. Для задания этих значений не для новой записи можно использовать следующий код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
    Dim Поле_Формы As Control
 
        For Each Поле_Формы In Me.Controls
            On Error Resume Next
                If Поле_Формы.DefaultValue <> "" Then
                    If Err.Number = 0 Then
                        Поле_Формы.Value = Поле_Формы.DefaultValue
                    End If
                End If
            On Error GoTo 0
        Next
Для "простых" значений по умолчанию это работает.
2
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.11.2012, 22:54
Я был прав. Ошибку давали расчетные поля. Чтобы предотвратить ошибку, в вышепоказанном коде, после строки Dim поставьте обход ошибок - On Error Resume Next
2
3 / 3 / 0
Регистрация: 21.10.2012
Сообщений: 208
09.11.2012, 22:57  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Почему бы не задать эти значений для полей формы, как значения по умолчанию?
Тогда они будут:
1. Автоматически подставляться в новую запись.
2. Для задания этих значений не для новой записи можно использовать следующий код
Смысл процесса ввода данных такой:
оператор вводит данные по годным деталям, причинам простоя и видам брака за смену. Суммарно должо время набраться в диапазоне 400-500 минут (время смены 435 мин, погрешность, человеческий фактор). после набора данных нажимает кнопку ввод данных, и все уходит в базу. Если ТПА не эксплуатировался, то нажав флажок "ТПА не использовался", все поля для набора данных зануляются и блокируются, а причине простоя Д1_0 "Нет заказа" присваивается значение 435. При выключении флажка все поля и Д1_0 на всякий случай опять обнуляются и разблокируются для ввода данных.
Сейчас это прописывается вот так:
Visual Basic
1
2
3
4
5
If Me.ТПА_не_использовался Then Me.Ввод_детали = Null: Me.Д1_0 = 435: Me.Д1_1 = 0: Me.Д1_2 = 0: Me.Д1_3 = 0: Me.Д1_4с = 0: Me.Д1_4ц = 0: Me.Д1_4т = 0: Me.Д1_4п = 0: Me.Д1_5э = 0: Me.Д1_5в = 0: Me.Д1_5г = 0: Me.Д1_5с = 0: Me.Д1_6с = 0: Me.Д1_6р = 0: Me.Д1_7 = 0: Me.Д1_8а = 0: Me.Д1_8п = 0: Me.Д1_9 = 0: Me.Д1_м = 0: Me.Б1_1 = 0: Me.Б1_2 = 0: Me.Б1_3 = 0: Me.Б1_4 = 0: Me.Б1_5 = 0: Me.Б1_6 = 0: Me.Б1_7 = 0: Me.Б1_8 = 0: Me.Б1_9 = 0: Me.Б1_10 = 0: Me.Б1_11 = 0: Me.Б1_12 = 0: Me.Б1_13 = 0: Me.Б1_14 = 0: Me.Б1_15 = 0: Me.Б1_16 = 0: Me.Б1_17 = 0:  Me.Факт_Д1 = 0: Me.Цикл_факт_детали = 0: Me.Цикл_теор_детали = 0: Me.Гнезд_Д1 = 0 _
'Else: Me.Д1_0 = 0: Me.Д1_1 = 0: Me.Д1_2 = 0: Me.Д1_3 = 0: Me.Д1_4с = 0: Me.Д1_4ц = 0: Me.Д1_4т = 0: Me.Д1_4п = 0: Me.Д1_5э = 0: Me.Д1_5в = 0: Me.Д1_5г = 0: Me.Д1_5с = 0: Me.Д1_6с = 0: Me.Д1_6р = 0: Me.Д1_7 = 0: Me.Д1_8а = 0: Me.Д1_8п = 0: Me.Д1_9 = 0: Me.Д1_м = 0: Me.Б1_1 = 0: Me.Б1_2 = 0: Me.Б1_3 = 0: Me.Б1_4 = 0: Me.Б1_5 = 0: Me.Б1_6 = 0: Me.Б1_7 = 0: Me.Б1_8 = 0: Me.Б1_9 = 0: Me.Б1_10 = 0: Me.Б1_11 = 0: Me.Б1_12 = 0: Me.Б1_13 = 0: Me.Б1_14 = 0: Me.Б1_15 = 0: Me.Б1_16 = 0: Me.Б1_17 = 0: Me.Факт_Д1 = 0: Me.Цикл_факт_детали = 0: Me.Цикл_теор_детали = 0: Me.Гнезд_Д1 = 0:
 
'If Me.ТПА_не_использовался Then Me.Ввод_детали2 = Null: Me.Д2_0 = 0: Me.Д2_1 = 0: Me.Д2_2 = 0: Me.Д2_3 = 0: Me.Д2_4с = 0: Me.Д2_4ц = 0: Me.Д2_4т = 0: Me.Д2_4п = 0: Me.Д2_5э = 0: Me.Д2_5в = 0: Me.Д2_5г = 0: Me.Д2_5с = 0: Me.Д2_6с = 0: Me.Д2_6р = 0: Me.Д2_7 = 0: Me.Д2_8а = 0: Me.Д2_8п = 0: Me.Д2_9 = 0: Me.Д2_М = 0: Me.Б2_1 = 0: Me.Б2_2 = 0: Me.Б2_3 = 0: Me.Б2_4 = 0: Me.Б2_5 = 0: Me.Б2_6 = 0: Me.Б2_7 = 0: Me.Б2_8 = 0: Me.Б2_9 = 0: Me.Б2_10 = 0: Me.Б2_11 = 0: Me.Б2_12 = 0: Me.Б2_13 = 0: Me.Б2_14 = 0: Me.Б2_15 = 0: Me.Б2_16 = 0: Me.Б2_17 = 0:  Me.Факт_Д2 = 0: Me.Цикл_факт_детали2 = 0: Me.Цикл_теор_детали2 = 0: Me.Гнезд_Д2 = 0 _
'Else: Me.Д2_0 = 0: Me.Д2_1 = 0: Me.Д2_2 = 0: Me.Д2_3 = 0: Me.Д2_4с = 0: Me.Д2_4ц = 0: Me.Д2_4т = 0: Me.Д2_4п = 0: Me.Д2_5э = 0: Me.Д2_5в = 0: Me.Д2_5г = 0: Me.Д2_5с = 0: Me.Д2_6с = 0: Me.Д2_6р = 0: Me.Д2_7 = 0: Me.Д2_8а = 0: Me.Д2_8п = 0: Me.Д2_9 = 0: Me.Д2_М = 0: Me.Б2_1 = 0: Me.Б2_2 = 0: Me.Б2_3 = 0: Me.Б2_4 = 0: Me.Б2_5 = 0: Me.Б2_6 = 0: Me.Б2_7 = 0: Me.Б2_8 = 0: Me.Б2_9 = 0: Me.Б2_10 = 0: Me.Б2_11 = 0: Me.Б2_12 = 0: Me.Б2_13 = 0: Me.Б2_14 = 0: Me.Б2_15 = 0: Me.Б2_16 = 0: Me.Б2_17 = 0: Me.Факт_Д2 = 0: Me.Цикл_факт_детали2 = 0: Me.Цикл_теор_детали2 = 0: Me.Гнезд_Д1 = 0:
но это не все поля еще указаны,
С ума сойти можно
Хочу эту процедуру оптимизировать
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
09.11.2012, 23:16
В форме "Ввод данных" значения по умолчанию стоят (везде 0). Так воспользуйтесь предлагаемым кодом. А блокировку можно сделать аналогичным кодом, с обработкой исключения -
Цитата Сообщение от u_tarvo Посмотреть сообщение
"ТПА не использовался"
.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2012, 23:16
Помогаю со студенческими работами здесь

Присвоение одного значения выделенным строкам в гриде.
Не ужели в гриде не возможно выделив несколько строк одним событием присвоить им одно значение имеется Grid VALUE1 - CODE1 - ...

Присвоение значения одного поля другому с условием
стоит задача присвоить поле rating из таблицы Rating в одноименное поле rating таблицы Content при условии что url страницы в обоих...

Присвоение нескольким компонентам формы одного и того же значения
Нужно упростить код. Как это можно сделать? Вот сам код. Form4-&gt;Label1-&gt;Visible=False; ...

Присвоение значения полю типа "Вложение" с использованием VBA
Дорогие коллеги, помогите решить элементарнейшую задачу которая меня поставила просто в тупик (поскольку я не профессионально занимаюсь...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru