2015-07-02 3 views
0

первый модуль ..как вернуть значение переменной из одного модуля в другой?

Public Sub Directory_Path() 
Dim Directory As String 
    Directory = InputBox("Enter the Directory path that contains folders ""This Quarter"",""Last Quarter"",""Second_Last_Quarter"".") 
    If Right(Directory, 1) = "\" Then 
    Directory = Left(Directory, Len(Directory) - 1) 
    End If 
End Sub 

я назвал первый модуль 2 модуля с использованием Public Sub Directory_Path(). Я хочу Directory переменную в первом модуле, которая будет использоваться в качестве переменной во втором модуле ... Помогите мне. Я что-то пропустил ... Если этот вопрос повторяется, ответьте мне, и я удалю этот пост.

+0

Возможный дубликат [Доступ к переменной модуля в другом модуле после запуска программа, которая вызывает этот модуль?] (http://stackoverflow.com/questions/31174123/access-a-variable-of-a-module-in-another-module-after-running-the-program-which) – barrowc

ответ

1

Наиболее очевидным решением является просто сделать его функцию ...

Public Function Directory_Path() As sting 
    Dim Directory As String 
    Directory = InputBox("Enter the Directory path that contains folders " & _ 
       """This Quarter"",""Last Quarter"",""Second_Last_Quarter"".") 
    If Right(Directory, 1) = "\" Then 
     Directory_Path = Left(Directory, Len(Directory) - 1) 
    Else 
     Directory_Path = vbNullString 
    End If 
End Function 

... и затем вызвать функцию:

Debug.Print Directory_Path 

Обратите внимание, что вместо того, чтобы требовать от пользователя ввести путь, вы можете использовать FileDialog вместо этого:

Public Function Directory_Path() As String 
    Dim prompt As FileDialog 
    Set prompt = Application.FileDialog(msoFileDialogFolderPicker) 
    With prompt 
     .Title = "Select Directory path that contains folders " & _ 
       """This Quarter"",""Last Quarter"",""Second_Last_Quarter""." 
     .AllowMultiSelect = False 
     If .Show <> 0 Then Directory_Path = .SelectedItems(1) 
    End With 
End Function 
+0

Я хочу использовать этот путь как строку в другом модуле. Как мы можем назначить Debug.Print Directory_Path некоторой переменной –

+0

'variable = Directory_Path' – Comintern

+0

Вы также можете использовать' public variable'. В первом модуле объявляйте 'Public variable' и присваивайте ему значение из этого модуля и вызывайте эту переменную из функции другого модуля. Это будет работать. –

Смежные вопросы