@frswataru
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A
Closed

Excel VBA set プロシージャの外では無効です

Q&A
Closed

解決したいこと

set プロシージャの外では無効です

現在開いているBOOKの5番目のシートを他のモジュールにも使える変数にしたい

発生している問題・エラー

コンパイルエラー プロシージャの外では無効です

該当するソースコード

' 現在のブック内のワークシートの5番目を代入
Public dstSheet As Worksheet
Set dstSheet = ThisWorkbook.Worksheets(5)



Sub OpenFilesInFolder()
    Dim path, fso, file, files
    'path = "C:/Users/xxxxxx/フォルダ名/"
    path = ThisWorkbook.path & "/Data/"  '相対パスの場合
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set files = fso.GetFolder(path).files

    'フォルダ内の全ファイルについて処理
    For Each file In files

        'ファイルを開いてブックとして取得
        Dim wb As Workbook
        Set wb = Workbooks.Open(file)
        'ブックに対する処理1
        Call SheetLoop
        '保存せずに閉じる
        'Call wb.Close(SaveChanges:=False)

    Next file

End Sub
0
1
Answer

2行目のSet文は、この位置に書くことはできず、SubプロシージャやFunctionプロシージャの中で代入するしかないと思います。

VBAにはコンストラクタ等の初期化呼び出しがないため、
解決策としては、
標準モジュールに

Public dstSheet As Worksheet

を書き、マクロが呼び出される可能性があるところの最初に、

Set dstSheet = ThisWorkbook.Worksheets(5)

を書くのはいかがでしょうか。

0
上手くいきました
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした