Excel VBAでユーザーフォームだけ表示したい
Excel VBAでユーザーフォームを作成し、ファイルを起動時にSheetを非表示にしてユーザーフォームのみ表示させるようにしました。
そうしたところ、
(1)実行ボタンをクリックすると作成されるExcelファイルも表示されなくなる
(2)終了ボタンをクリックするとユーザーフォームを含むExcelファイルだけが閉じるのではなく、Excelのアプリ自体が終了してしまう(実行ボタンで作成したExcelファイルは表示したままにしたいのに閉じてしまう)
という現象になってしまいました。
某書籍を参考にしてコードを書いたのですが、なぜかこのようになってしまいました。
※「★」が書籍に指示があった箇所です。
<ThisWorkbook>
Private Sub Workbook_Open()
Application.Visible = False '★
myForm.Show '★
myForm.MultiPage1.Value = 0 'マルチページ構成のため
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'========== [×]ボタン,[Alt]+[F4]キーを無効にする ==========
Dim msg As String, title As String
msg = "[画面を閉じて終了する]ボタンから終了してください。"
title = "終了方法"
Dim res As Integer
Select Case CloseMode
Case vbFormControlMenu
res = MsgBox(msg, vbOKOnly + vbCritical, title)
Cancel = True
End Select
ActiveWorkbook.Save '★
Application.Visible = True '★
Application.Quit '★
End Sub
実行したいのは、
(1)ユーザーフォームを含むExcelファイルを起動したときは、起動時にユーザーフォームだけが表示されるようにしたい
※ワークシートを非表示としたい
(2)「実行」ボタンをクリックすると、プログラムが実行されExcelファイルが新規で作成され表示される
※上記で記載した「★」の部分をコードをコメントアウトしてユーザーフォームから実行ボタンをクリックすると、プログラムが実行され正常にExcelファイルが新規で作成されることは確認済みです。
(3)ユーザーフォームが閉じても、ユーザーフォームのExcelファイルのみ閉じ、新規で作成されたExcelファイルは閉じない。
※実行ボタンをクリックして新規ファイルを作成しなかったり、他にExcelファイルがなかった場合は、Excelは終了する。
それとあわせて、
(1)を実行できた場合に、再度コードを編集する時はどうしたらExcelの画面が表示できるのか教えて下さい。
※それとも表示できないのでしょうか?
作成締め切りが迫っていて焦っています。
お知恵のある方どうかお力添え下さい。
よろしくお願い致します。
補足
ありがとうございます。 マクロのセキュリティを確認したところ,「警告を表示してすべてのマクロを無効にする。」でした。 その Excel 2007 で新規ブックにマクロ(簡単なもので構わない)を書いて保存・終了し,そいつを再度同じ Excel 2007 で開いてみたところ,動きました。 次に,そのブックをExcel 2000で編集・保存し,Excel 2007 で動かしたところ,動きました。 次に,そのブックをExcel 2007で開き,別のExcel 2000で作成したシート等をコピーして,保存し, またExcel 2007で開いたところ,動きました。 次に,そのブックをExcel 2000で編集・保存し,Excel 2007 で動かしたところ,動きませんでした。 そのファイルはExcel 2000では動きます。 少し,迷宮入りしそうです。 何か,アドバイスなどありましたら,よろしくお願いします。