Я сам столкнулся с формой этой проблемы, поэтому ради потомков:
Хотя в целом совет "Не используйте непрерывные формы / таблицы данных в этой ситуации" - лучший совет ... Можно обойти это.
Однако доступ не позволит вам обновить значение одного элемента управления в таблице данных.Вместо этого в этом случае можно использовать временную таблицу, которая при использовании в качестве источника записей может стать значениями этих элементов управления.Вам нужно будет заново заполнить таблицу и запрашивать элементы управления (также должен работать запрос всей формы) каждый раз, когда необходимо изменить расчет.Кроме того, если вы включите редактирование для элементов управления, вам нужно будет написать несколько VBA для каждого элемента управления для обработки события обновления (перед обновлением) и выполнить собственный запрос для обновления исходных таблиц, а не только временной таблицы.Раздражать, возможно, но эффективно.
Есть еще одна возможность, которая также может сработать, но я сам не пытался сделать что-то подобное.Источник строк в выпадающем списке может быть очень сложным, поэтому вполне вероятно, что вам вообще не нужно обновлять выпадающие списки с помощью VBA.Источник строк может зависеть от других элементов управления (например, другого комбинированного списка), используя синтаксис Me.Form! ControlName или Forms! FormName! ControlName, который позволит вам сформировать составной ключ.Конечно, вы также можете выбирать из запросов с источником строк.Что более интересно, запросы могут ссылаться на элементы управления в вашей форме, при условии, что форма открыта, и вы можете смело изменять ее с помощью VBA, если вам это необходимо.
Между этими двумя элементами следуетиметь возможность принудительного доступа, пинать и кричать, отображать любые данные, которые вы хотите, даже в таблице данных, и разрешать пользователю изменять эти данные (но только если вы этого хотите), и, используя событие BeforeUpdate, перетаскивать измененные данныевернуться к столу, откуда он взялся.