2013-05-20 55 views
2

我想在Access 2K7數據庫中做一些更通用的東西。我有一個表單,我通過一些信息來使用OpenArgs。我傳遞一個表單名稱,子表單名稱和字段名稱,所以可以填充該字段。是否可以將字符串轉換爲對象引用?

我遇到了麻煩,「重建」引用該字段。我試過以下,但VBA不喜歡它:

Dim strForm, strField, strSubForm As String 
Dim frm As Form 

strForm = Left(Me.OpenArgs, InStr(Me.OpenArgs, "|") - 1) 
Brk1 = Mid(Me.OpenArgs, InStr(Me.OpenArgs, "|") + 1) 
strField = Left(Brk1, InStr(Brk1, "|") - 1) 
strSubForm = Mid(Brk1, InStr(Brk1, "|") + 1) 

X = "Forms!" & strForm 
Y = X & "!" & strSubForm 
Z = Y & "!" & strField 
frm(Z) = Me.Calendar0.Value 

這個exercize的目的是日曆(Me.Calendar0.Value)的值傳遞給現場的子窗體(窗體!strForm!strSubForm!strField)。我只是無法弄清楚如何以VBA能夠接受的方式來編寫它。我收到「對象變量或塊變量未設置」錯誤。

回答

5

在VBA編輯器修改一下週圍使我懷疑,這樣的事情可能工作:

Dim sbf As SubForm 
Set frm = Forms(strForm) 
Set sbf = frm.Controls(strSubForm) 
sbf.Controls(strField).Value = me.Calendar0.Value 
Set sbf = Nothing 
Set frm = Nothing 
+0

這是它!謝謝! –

2

你...

Dim frm As Form 

...但後來您嘗試使用frm沒有先將其設置爲表單實例。這就是爲什麼你沒有設置對象變量的錯誤。

但還有另一個問題可能正在等待咬你。一個表單可以包含一個子窗體控件,並且該控件的名稱可能與其包含的窗體的名稱不同。確保您使用子表格控件的名稱。

如果strSubForm是子窗體控件,這應該工作...

Forms(strForm).Controls(strSubForm).Form.Controls(strField) = Me.Calendar0.Value