Ссылаясь на комментарий Дэвида выше:
.Value не требуется, так как это свойство по умолчанию. Единственный случай, когда вы можете указать это, если вы передаете управляющее значение
в подпрограмму / функцию, которая передает параметр ByRef вместо
ByVal. Использование .Value заставляет ByVal, даже если параметр определен как
ByRef. Но, конечно, если подпрограмма / функция предполагает, что она получает
контрольная ссылка, которая может его сломать ...
ByRef / ByVal :: Это то, что у меня сработало. У меня есть форма, которая содержит два объекта календаря, и хотел, чтобы значения для каждого объекта были ссылки из другого модуля модуля. Кажется, не имеет значения, использовал ли я ByRef или ByVal. В приведенном ниже примере я использовал ByRef.
public sub nameofsub(byref calendarfromdate as string, byref calendartodate as string)
docmd.runsql("select fieldname from table where fieldname between #" & calendarfromdate & "# and #" & calendartodate & "#")
end sub
В открывшейся форме у меня была кнопка, которая вызывала этот саб при нажатии и выполняла мой необходимый код.
private sub btn_callqry_click()
call nameofsub(calendarfromdate,calendartodate)
end sub
Нет необходимости публично объявлять значения для calendarfromdate и calendartodate в начале класса открытой формы, например:
public calendarfromdate as string
общедоступный календарь в виде строки
ПРИМЕЧАНИЕ. При использовании приведенного выше примера строки должны быть отформатированы как мм / дд / гггг
ПРИМЕЧАНИЕ. Если ваша форма содержит объект управления календарем, обнаруженный при использовании Access в Windows XP, объект календаря не существует в Windows 7, лучше всего просто вынуть объект календаря и поместить его в два текстовых поля с надписью как FromDate и ToDate и измените их свойства, чтобы отформатировать текст как «Дата». После этого автоматически появится селектор даты рядом с полем после их ввода.