Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 16:41   #1
Maryver
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 13
Вопрос Процедура не позволяет передать больше одного параметра

Подскажите, пожалуйста, в чем ошибка:
Есть процедура следующего вида:
Код:
Sub Create_Template(ByVal TemplateName As String, Optional ByVal DateofVal As Date = "01.01.2011", _
Optional ByVal DateStart As Date = "01.01.2008", Optional ByVal n As Integer = 15)
...
End sub
И процедура, которая вызывает предыдущую:
Код:
Private Sub CommandButton1_Click()
Dim ndate As Date, n as integer
    ndate = CDate(Label6.Caption)
    n = 10
    For i = o To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then Create_Template (ListBox1.List(i))
    Next i
    Unload Me
End Sub
В таком виде все ок, все выполняется. Но как только я добавляю параметры, меняя строчку, например так:
Код:
 If ListBox1.Selected(i) = True Then Create_Template (ListBox1.List(i),,,n)
Мне выдает Compile error. Expected :=
Maryver вне форума Ответить с цитированием
Старый 15.08.2011, 16:56   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

пробуйте так:
Код:
If ListBox1.Selected(i) = True Then Create_Template(TemplateName:=ListBox1.List(i), n:=n)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.08.2011, 16:59   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

ИМХО скобки лишние, и "= True" можно убрать
Код:
If ListBox1.Selected(i) Then Create_Template ListBox1.List(i),,,n
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 15.08.2011, 17:07   #4
Maryver
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 13
По умолчанию

@Казанский, спасибо огромное. Действительно, как только скобки убрала, все заработало.
(только не очень понятен принцип, когда их нужно ставить, когда нет)
Maryver вне форума Ответить с цитированием
Старый 15.08.2011, 17:15   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Читайте справку по Call Statement:
Код:
If you omit the Call keyword, you also must omit the parentheses around argumentlist.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 15.08.2011, 19:11   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Казанский, спасибо!

я провтыкал Sub в начале, вижу Expected :=, "ожидалось присвоить", я и налепил... горбатых к стене
в моем "пробуйте" - была доля сомнений...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать в запрос значение параметра Makarus Microsoft Office Access 5 20.01.2011 23:15
автоматический вывод данных при вводе одного параметра Akmal-Sharipov Microsoft Office Excel 9 16.12.2010 16:13
измениние в строке форумл одного параметра marc-nikita Microsoft Office Excel 10 29.01.2010 01:12