2012-10-24 25 views
3

我想從另一個表單創建一個表單。但表單類沒有顯示的方法,這在Form_Main在http://msdn.microsoft.com/en-us/library/office/gg251540.aspxVBA - Form類沒有顯示方法

它的代碼描述:

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

但我收到「編譯錯誤:方法或數據成員未找到」。

我在哪裏犯錯?

感謝

(VBA版本6.5; 2007年訪問)

=====
對不起,我之前的評論:現在我看到的評論並不明顯。

我的mainForm沒有子表單。

我有兩個簡單的形式:Form_Main和Form_Option。我想成爲下一個邏輯:

  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」參數。

我的問題是解決了,感謝

回答

1

的「錯誤」是Show不是訪問形式的一種有效方法。您提供的鏈接是用於使用VBA製作的表單的用戶窗體。

如果你想創建一個新的形式,你想要的那種方式是這樣的:

frmOpt.Modal = true 
frmOpt.Visible = true 

雖然我會建議是這樣做的,而不是: DoCmd.OpenForm "Option", , , , , acDialog將打開期權形式的對話。

注意:如果使用New創建表單,即使將其設置爲模態,它也不會停止VBA代碼的進度。這意味着只要代碼完成,您的變量就會超出範圍。如果你希望你的形式保持開放,則需要將其設置爲靜態子內或宣告其子像這樣外:

static frmOpt As Form_Option 

或外面的分private frmOpt = Form_Optionpublic frmOpt = Form_Option

+0

我忘了說,我的第一個原因是我想要從子窗體中更改父窗體的屬性。因爲我決定從代碼創建子表單,但是有沒有人以另一種方式做到這一點? – Galiego710

+0

那麼... Form_Option是一個孩子的形式?通過更改父表單的屬性,你的意思是什麼?如果表格是一個真正的兒童表格,最合理的方式(在我看來)是在您的父表格上已經有一個孩子表格,並且只有在您需要時才能看到。 –

+0

我編輯帖子。我寫了我想要的,我認爲我的問題解決了。 – Galiego710

相關問題