1

私はすでにこれらの2つの投稿を見てきました:

Unload Me でユーザーフォームを閉じても機能しない

VBA ユーザーフォームで開いているワークブックを閉じる際のエラー

どちらも、フォームコードからファイルを閉じたい場合は、最初にフォームをアンロードする必要があることを示唆しています (Unload Me を使用)。ただし、アンロードすると、逆参照されているグローバル配列があります。

ただし、以下のコードを見てください (test に global_int(0,0) を割り当てるとクラッシュします)。配列を削除しない限り、フォームをアンロードできません。これが本当にこの問題の唯一の解決策ですか?

新しい Excel ファイルを作成します。その中で、ユーザーフォームを作成します。その上で、次のクリック イベント コードとグローバル宣言を使用してコマンド ボタンを作成します。

Private global_int(2, 10) As Integer

Private Sub CommandButton1_Click()
    global_int(0, 0) = 23

    Dim filename As String
    Dim opened_workbook As Workbook

    filename = Application.GetOpenFilename()    ' User selects valid Excel file
    Set opened_workbook = Application.Workbooks.Open(filename)
    ' File operations would occur here
    Unload Me
    opened_workbook.Close    ' Exception thrown here

    Dim test As Integer
    test = global_int(0, 0)

    MsgBox "If you got here, it worked!"

End Sub

他の人のコードを Mac で動作するように調整しているだけなので、可能であれば完全なリファクタリングは避けたいと思います。

ありがとう。

4

1 に答える 1