Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как передать переменную из одного макроса в другой? - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как передать переменную из одного макроса в другой? (Макросы/Sub)
Как передать переменную из одного макроса в другой?
Sancho Дата: Четверг, 07.07.2016, 12:38 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 3 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет!. Пытаюсь срастить два макроса что бы они выполнялись без дополнительного вызова. Первый макрос вызывает окно выбора папки где находятся нужные файлы и если в этой папке находятся файлы *.xls то пересохраняет их как *.xlsm.
[vba]
Код

Sub x()

Dim strFolder As String, strFileName As String
    Dim strNewFolder As String, strNewFileName As String
    Dim wb As Workbook
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        If .Show = 0 Then
            Exit Sub
        End If
        strFolder = .SelectedItems(1)
    End With
.....
end sub
[/vba]
второй тоже запрашивает нужную папку для дальнейшей работы с файлами
[vba]
Код
Sub CheckAllFiles()
    Dim BazaWb As Workbook     
    Dim iTempWb As Workbook   
    Dim iTempFileName As String
    Dim iPath As String       
    Dim iNumFiles As Long      
    Dim iWrongFiles As Long  
    Dim iRightFiles As Long   
    Dim sFolder As String     

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
        Set BazaWb = ThisWorkbook
        
        iPath = BazaWb.Path & "\"
        With .FileDialog(msoFileDialogFolderPicker)
            .Title = "Выберете папку"
            .InitialFileName = iPath
            If .Show = False Then Exit Sub
            iPath = .SelectedItems(1)
        End With
        iPath = iPath & IIf(Right(iPath, 1) = Application.PathSeparator, "", Application.PathSeparator)
....
end sub
[/vba]
пытаюсь соеденить так:
[vba]
Код
Sub CheckAllFiles()
x

    Dim BazaWb As Workbook     
    Dim iTempWb As Workbook     
    Dim iTempFileName As String
    Dim iPath As String        
    Dim iNumFiles As Long     
    Dim iWrongFiles As Long    
    Dim iRightFiles As Long      '

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
        Set BazaWb = ThisWorkbook
        
        iPath = strFolder
        iPath = iPath & IIf(Right(iPath, 1) = Application.PathSeparator, "", Application.PathSeparator)
....
end sub
[/vba]

в результате значение переменной iPath = strFolder Empty , т.е. из первого макроса strFolder переменная не передается. Как мне выкрутиться. соединить в один боюсь не осилю и запутаюсь.
Подскажите пожалуйста.
 
Ответить
СообщениеВсем привет!. Пытаюсь срастить два макроса что бы они выполнялись без дополнительного вызова. Первый макрос вызывает окно выбора папки где находятся нужные файлы и если в этой папке находятся файлы *.xls то пересохраняет их как *.xlsm.
[vba]
Код

Sub x()

Dim strFolder As String, strFileName As String
    Dim strNewFolder As String, strNewFileName As String
    Dim wb As Workbook
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        If .Show = 0 Then
            Exit Sub
        End If
        strFolder = .SelectedItems(1)
    End With
.....
end sub
[/vba]
второй тоже запрашивает нужную папку для дальнейшей работы с файлами
[vba]
Код
Sub CheckAllFiles()
    Dim BazaWb As Workbook     
    Dim iTempWb As Workbook   
    Dim iTempFileName As String
    Dim iPath As String       
    Dim iNumFiles As Long      
    Dim iWrongFiles As Long  
    Dim iRightFiles As Long   
    Dim sFolder As String     

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
        Set BazaWb = ThisWorkbook
        
        iPath = BazaWb.Path & "\"
        With .FileDialog(msoFileDialogFolderPicker)
            .Title = "Выберете папку"
            .InitialFileName = iPath
            If .Show = False Then Exit Sub
            iPath = .SelectedItems(1)
        End With
        iPath = iPath & IIf(Right(iPath, 1) = Application.PathSeparator, "", Application.PathSeparator)
....
end sub
[/vba]
пытаюсь соеденить так:
[vba]
Код
Sub CheckAllFiles()
x

    Dim BazaWb As Workbook     
    Dim iTempWb As Workbook     
    Dim iTempFileName As String
    Dim iPath As String        
    Dim iNumFiles As Long     
    Dim iWrongFiles As Long    
    Dim iRightFiles As Long      '

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
        Set BazaWb = ThisWorkbook
        
        iPath = strFolder
        iPath = iPath & IIf(Right(iPath, 1) = Application.PathSeparator, "", Application.PathSeparator)
....
end sub
[/vba]

в результате значение переменной iPath = strFolder Empty , т.е. из первого макроса strFolder переменная не передается. Как мне выкрутиться. соединить в один боюсь не осилю и запутаюсь.
Подскажите пожалуйста.

Автор - Sancho
Дата добавления - 07.07.2016 в 12:38
Manyasha Дата: Четверг, 07.07.2016, 12:48 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1826
Репутация: 765 ±
Замечаний: 0% ±

Excel 2007, 2010
Sancho, сделайте переменную strFolder глобальной:
[vba]
Код
Dim strFolder As String
Sub x()
...
End Sub

Sub CheckAllFiles()
...
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеSancho, сделайте переменную strFolder глобальной:
[vba]
Код
Dim strFolder As String
Sub x()
...
End Sub

Sub CheckAllFiles()
...
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 07.07.2016 в 12:48
Sancho Дата: Четверг, 07.07.2016, 15:01 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 3 ±
Замечаний: 0% ±

2007, 2010, 2013
Manyasha, Большое спасибо!
 
Ответить
СообщениеManyasha, Большое спасибо!

Автор - Sancho
Дата добавления - 07.07.2016 в 15:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как передать переменную из одного макроса в другой? (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!