3

あるフォームを別のフォームから作成したい。ただし、Formクラスには、http://msdn.microsoft.com/en-us/library/office/gg251540.aspxで説明されているShowメソッドがありません。

Form_Mainのコードです:

Private Sub btnTemp_Click()
    Dim frmOpt As Form_Option
    Set frmOpt = New Form_Option
    frmOpt.Show vbModal
End Sub

しかし、「コンパイルエラー:メソッドまたはデータメンバーが見つかりません」を受け取りました。

どこを間違えたの?

ありがとう

(VBAバージョン6.5; Access 2007)

=====
前のコメントで申し訳ありません:今のところ、コメントが明確ではないことがわかります。

mainFormにsubFormがありません。

Form_MainとForm_Optionの2つの単純なフォームがあります。そして私は次の論理になりたいです:

  1. Form_Mainにはボタン「btnOption」があります
  2. 「btnOption」をクリックします。Form_Optionが開いています
  3. Form_Optionのオプションを変更します
  4. そして、Form_OptionのbtnSaveボタンをクリックすると、次のアイデアが実行されます。
    Form_Main.TimerInterval = CLng(Form_Option.edtTimerInterval.Value)


現時点では、それを単純にしました。そして、それは私にとって十分です。
私はそう書いています:

Private Sub btnOptions_Click()
    '  After changing options, refresh timer interval of main form
    DoCmd.OpenForm "Options", , , , , acDialog
    Me.TimerInterval = 1000 * CLng(MOptions.loadOption("fPeriodVerifyNoticeInterval"))
End Sub

ここで、fPeriodVerifyNoticeIntervalは、オプションテーブルに保存されているパラメータです。
また、オプションフォームは、保存時に「fPeriodVerifyNoticeInterval」パラメータを変更します。

私の問題は解決しました、ありがとう

4

1 に答える 1

1

「間違い」はShow、アクセスフォームの有効な方法ではないということです。指定したリンクは、VBAで作成されたフォームであるユーザーフォーム用です。

そのように新しいフォームを作成したい場合、必要なものは次のようになります。

frmOpt.Modal = true
frmOpt.Visible = true

私がお勧めするのは、代わりにこれを行うことです。 DoCmd.OpenForm "Option", , , , , acDialogこれにより、オプションフォームがダイアログとして開きます。

注意:モーダルとして設定した場合でも、Newを使用してフォームを作成すると、VBAコードの進行が停止することはありません。これは、コードが終了するとすぐに変数がスコープ外になることを意味します。フォームを開いたままにしておきたい場合は、サブ内で静的として設定するか、次のようにサブ外で宣言する必要があります。

static frmOpt As Form_Option

または潜水艦の外private frmOpt = Form_Optionまたはpublic frmOpt = Form_Option

于 2012-10-25T00:20:40.620 に答える