2017-12-27 489 views
0

我正試圖將一個窗體/子窗體名稱傳遞給一個函數,但沒有成功。該功能通過子窗體上的每個.Control控制,並執行一組簡單的查詢操作。我的代碼正常工作與表單/子表單名稱硬編碼;我正在尋找更通用的方法。訪問VBA:將窗體/子窗體名稱傳遞給函數?

在函數調用中獲取類型不匹配錯誤,使用和不使用引號。

實施例:

'Function Call 
    call AuditChanges("forms![someForm]![someSubForm]") 

'Audit Function 
Sub AuditChanges(thisForm as form) 
    Dim ctl As Control 
    Dim strTest as string 

    For each ctl in thisForm.controls 
     strTest = ctl.Value 
     'do some stuff 
    Next ctl 

end sub 

正確的語法任何建議傳遞形式/子窗體的信息?

謝謝!

+1

_「在函數調用中獲取類型不匹配錯誤」_通常最好也引用它。 –

回答

2

你的子調用各種奇怪的:

您的錯誤的可能原因是引號。您當前將字符串傳遞給包含"forms![someForm]![someSubForm]"

的字符串此外,當您沒有收到返回值時(因此從不在調用子時),不應使用括號。

此外,很久以前Call關鍵字已被棄用。

而且你可能想通過表單對象,而不是窗體控件對象

試着打電話給你分這樣的:

之前
AuditChanges forms![someForm]![someSubForm].Form 

(從未有過的一行代碼這麼多評論)

+0

對不起,這個例子是一個很弱的嘗試來說明我的意圖而不會讓細節混亂。 :) –

+0

Erik,您的建議「AuditChanges形式![someForm]![someSubForm] .Form」(不含引號)根據需要工作。 - 謝謝 –

+0

好。我有時候有點批評,大約一半的觀點('call',括號)可能不是任何錯誤的原因。一個最小的例子往往很難,魔鬼的細節:) –

相關問題