2010-01-21 4 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, passTabName)» –

+0

Основываясь на вашей предыдущей публикации по подобной теме, вы идете по неправильному пути http://stackoverflow.com/questions/1822628/ динамический доступ-форма. С наилучшими пожеланиями. –

ответ

2

При вызове метода с несколькими параметрами и использованием круглых скобок необходимо использовать ключевое слово Call.

Например, это будет работать:

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

Добро пожаловать в удивительный мир VBA. ;)

+3

Или просто опустить круглые скобки: CreateKeywords stDocName, passTabName – 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 для передачи параметров, вы действительно должны использовать его только тогда, когда вы уверены, что хотите изменить переданную переменную в вызываемой суб/функции. –