Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача параметров макросу.
 
 автор: ByBY   (13.02.2007 в 10:36)   личное сообщение
 
 

Ячейка сод. параметры для пользовательской процедуры ( sub1), кнопке назначен вызов этой процедуры ... call sub1(парам1....парамN). Как передать парам. из ячейки рабочего листа?
Заранее благодарен....

  Ответить  
 
 автор: pashulka   (13.02.2007 в 15:42)   личное сообщение
 
 

Предположим, что в ячейке "A1" содержатся параметры для процедуры myMacros, например : Текст;10 Тогда, в модуле этого листа, Вы можете расположить :

Private Sub CommandButton1_Click() 'MS Excel 2000 и старше
    If Not IsEmpty([A1]) Then
       vParams = Split([A1], ";")
       If UBound(vParams) = 1 Then
          If IsNumeric(vParams(1)) = True Then
             myMacros CStr(vParams(0)), CLng(vParams(1))
          End If
       End If
    Else
       MsgBox "Ячейка не содержит информации", vbCritical, ""
    End If
End Sub

Private Sub myMacros(iText As String, iCount As Long)
    Dim iCounter As Long
    For iCounter = 1 To iCount
        MsgBox iText & iCounter, vbOKOnly, ""
    Next
End Sub


Если же Вы абсолютно уверены в правильности и корректности заполнения нужной ячейки, то можно использовать что-то вроде нижеопубликованного варианта :

Private Sub CommandButton1_Click() 'MS Excel 2000 и старше
    myMacros Split([A1], ";")
End Sub

Private Sub myMacros(ParamArray Argument())
    Dim iCounter As Long
    For iCounter = 1 To CLng(Argument(0)(1))
        MsgBox Argument(0)(0) & iCounter, vbOKOnly, ""
    Next
End Sub

  Ответить  
 
 автор: ByBy   (13.02.2007 в 18:24)   личное сообщение
 
 

Огромное спасибо!
Рассматривал, Ваш вариант как идею.
Хотел "слепить" целиком строку вызова в проц. по клику. Хоти не уверен , что это возможно..
выдаеттся что-то типа "объект 'имя_(парам_)' не найден "


С увж. Виктор

  Ответить  
 
 автор: pashulka   (13.02.2007 в 19:20)   личное сообщение
 
 

Виктор, Если это допустимо, то можно создать процедуру без параметров и анализировать данные уже непосредственно в этой процедуре. В качестве примера используется событие Worksheet_BeforeDoubleClick которое вызывается двойным кликом мышки и которое необходимо разместить в модуле нужного рабочего листа.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$A$1" Then 'MS Excel 2000 и старше
        If Not IsEmpty(Target) Then
           Dim iText As String, vParams As Variant
           Dim iCounter As Long, iCount As Long ''
           vParams = Split(Target, ";")
           If UBound(vParams) = 1 Then
              If IsNumeric(vParams(1)) = True Then
                 iText = CStr(vParams(0))
                 iCount = CLng(vParams(1))
                 For iCounter = 1 To iCount
                     MsgBox iText & iCounter, vbOKOnly, ""
                 Next
              End If
           End If
        Else
           MsgBox "Ячейка не содержит информации", vbCritical, ""
        End If
    End If
End Sub

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList