Sub AとSub Bという複数のプロシージャをModule1に配置し、Sub Aで指定したファイルをSub Bで呼び出そうとしていますが、変数が受け継がれません。変数を保持する方法はありますか?
シートのセルに変数を保持して呼び出す方法以外に、変数を保持する方法はありますか?
変数を保持して呼び出す方法
変数を保持する方法
2022/02/10 15:36
変数が受け継がれない
2022/02/10 15:24
sub A(),subB()と複数のプロシージャをModule1に配置。
Sub Aでターゲットファイル(T_File)を指定して
Sub Bで同じT_Fileを呼び出そうとしたのですが
Subの前に配列は宣言しているのでPrivateのハズなのに
変数が受け継がれません
T_Fileが”””となります。
多分、Sub A()が終了した時点で一度マクロが終了して
新たにSub B()を呼び出すので上手く変数が受け継がれないのだと思います。
何処かのシートのセルに変数を保持して呼び出す方法が考えられますが
そのほかに変数を保持する方法は有りませんか?
(できればシートのセルに保持しない方法があれば教えて下さい。)
以下コード(コードが長いので必要と思われる所だけを記載しています。)
’------------------------------------
Option Explicit
Dim dlg As FileDialog
Dim T_File As String
Sub A()
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
If dlg.Show = False Then
MsgBox "処理はキャンセルされました。"
Exit Sub
Else
End If
'指定テキストファイル読み込み
T_File = dlg.SelectedItems(1)
'(途中のコード省略)
If rc = vbNo Then
MsgBox "処理を中止します。", vbCritical
Exit Sub
Else
MsgBox "処理が終了しました。", vbInformation
End If
End Sub
Sub B()
’T_File = dlg.SelectedItems(1)
Folder_Name = CreateObject("Scripting.FileSystemObject").GetParentFolderName(T_File)
End Sub
>Dim T_File As String を
>Public T_File As Stringにすればいいのでは。
sub A()が始まる前に
DIMで配列宣言をすれば、Public と書かなくても
それは、Publicとして扱われると思っていたのですが
私の認識が間違っているいるのでしょうか?
Option Explicit
Dim dlg As FileDialog
Dim T_File As String
Sub A()
Dim T_File As String を
Public T_File As Stringにすればいいのでは。
質問者
補足
>Dim T_File As String を
>Public T_File As Stringにすればいいのでは。
sub A()が始まる前に
DIMで配列宣言をすれば、Public と書かなくても
それは、Publicとして扱われると思っていたのですが
私の認識が間違っているいるのでしょうか?
Option Explicit
Dim dlg As FileDialog
Dim T_File As String
Sub A()
補足
>Dim T_File As String を >Public T_File As Stringにすればいいのでは。 sub A()が始まる前に DIMで配列宣言をすれば、Public と書かなくても それは、Publicとして扱われると思っていたのですが 私の認識が間違っているいるのでしょうか? Option Explicit Dim dlg As FileDialog Dim T_File As String Sub A()