私はすでにこれらの2つの投稿を見てきました:
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 で動作するように調整しているだけなので、可能であれば完全なリファクタリングは避けたいと思います。
ありがとう。