2010-01-21 65 views
0

我可以在窗体加载时添加控件。我需要这些控件进行分类,以便用户每次只能看到几个。我的第一个想法是将控件附加到特定的选项卡。不知道为什么在下面的代码中关闭了语法。谢谢您的帮助!编译时间:语法错误

Private Sub Enter_Records_Click() 

Dim stDocName As String 
Dim tabPage As String 
Dim tabNum As Integer 
Dim i As Integer 
Dim passedTabName As String 

stDocName = "CLForm" 
tabPage = "tabControl.tabPage" 
stTabName = stDocName & tabPage 
tabNum = 8 'the number of tabs on the "CLForm" 

DoCmd.OpenForm stDocName, acDesign 
For i = 0 To tabNum - 1 
    passedTabName = stTabName & i 
    CreateKeywords (stDocName, passedTabName) 
Next i 
DoCmd.Close acForm, stDocName, acSaveYes 
DoCmd.OpenForm stDocName, acNormal 

End Sub 

Public Sub CreateKeywords(frmName As String, tabName As String) 

另一个想法,可能是更好的,只是有按钮,显示控件一类在同一时间。这会更容易吗?

+1

关于发布实际的错误你怎么了?并指向我们导致它的线? – Thomas

+0

错误:“编译错误:语法错误” 行:“CreateKeywords(stDocName,passedTabName)” –

+0

根据您以前在类似主题上的发布,您将错误的路径http://stackoverflow.com/questions/1822628/动态存取形式。最好的祝愿。 –

回答

2

当调用具有多个参数的方法并使用括号时,您需要使用调用关键字。

例如,这些将工作:

Call CreateKeywords(stDocName, passedTabName) 
CreateKeywords stDocName, passedTabName 
//Example of using parentheses with one parameter 
Msgbox (stDocName) 

欢迎VBA的精彩世界。 ;)

+3

或者干脆省略小括号:CreateKeywords stDocName,passedTabName – Fionnuala

0

这是最好小心调用参数和括号:

Public Sub CallingSub() 
    CallingArg = "ABCDEF" 
    CalledFunc CallingArg 
    Debug.Print CallingArg ''Result: 987654 

    CallingArg = "ABCDEF" 
    CalledFunc (CallingArg) ''Result: ABCDEF 
    Debug.Print CallingArg 

    CallingArg = "ABCDEF" 
    Call CalledFunc(CallingArg) 
    Debug.Print CallingArg ''Result: 987654 
End Sub 

Public Function CalledFunc(CalledFuncArg) 
    CalledFuncArg = "987654" 
    CalledFunc = "Return" 
End Function 
+0

这不是使用ByRef时的谨慎吗?基本上,虽然ByRef是VBA中用于传递参数的默认值,但只有在确定要修改已调用子函数中传递的变量时,才应该使用它。 –