ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

フォームを使うマクロを作成中です。
1つの機能分のマクロを書いては動作を確認しながら
作っていたのですが、

「ブックを開くと同時にシートを隠してフォームだけ表示」

というのを試してみたところ
無事フォームだけ表示されました。
が、作業の続きができなくて困っています。

フォームしか表示されないのでマクロの画面にいけません。
どのようにしたらよいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (7件)

こんばんは。



>マクロの画面にいく手順として「開発」→「マクロ」→「編集」のみを使っていました。
>そうしますとマクロ無効の設定のためか「編集」ボタンが無効に
なっていますので、

解決して良かったです。実は、私は、Alt + F11のショートカットを通常使っているので気が付きませんでした。メニューからですと、面倒だからです。

なお、なんとか、今のやっているものは、完成させたほうがよいですね。それが良いにしろ、悪いにしろ、VBAを一通り扱える人は、一度は、やったことがあるはずです。

完全に、Excelの本体を見せずにマクロを実行させて終了させる方法としては、CreateObject("Excel.Application") を使ったほうが良いのではないか、私は考えています。
    • good
    • 0

こんばんは。



>マクロが無効だとマクロの編集もできない状態でしか
>ファイルが開けませんでした。

それは、編集できないなんて、ありえないのですが……。

ご質問者さんは、VBAを手がけてから、すでに3年以上は経っているはずですから、あまり初歩的なことではないと思うのですが。

私は、Excel 2000~2007 までは扱いますが、ExcelのVersion に関係なく、プロテクトをしていない状態で、そのようなことはありえません。もちろんプロテクトがしてあれば、マクロが無効状態でも開くはずがありません。

ワークシートから、ツール-マクロ-Visual Basic Editor で、[VBEditor] を開けるか、 Alt + F11 であけて、プロジェクトウィンドウから、UserForm の部分をクリックして、コードを出せばよいのですが、何か特殊なことをしているのですか?

できるだけ、詳しい説明をもう一度お願いします。
そうでなければ、いろいろ試してみてください。

この問題は、今回の件に関わらず、VBAをオフにして、VBEditor を開けられないと、仕事など、先々に困ることが起きます。これだけは、何はともあれ、実務でVBAプログラムを扱う者として必ず習得してください。

>こんな事もできるんだという好奇心からの行為でした。

別に、そのこと自体は悪くないです。FOMの教科書に載っています。ただ、FOMのテキストを書いた人が、今ひとつ、コードのできがよくないだけでなく、今は、それはやらないです。理由は、その後に、Application.Quit を入れると不明のエラーが発生することがあって、危険性はないものの、ハングしないで終了する方法が見当たらないのです。昔は、そのようなことがなかったのかもしれません。

この回答への補足

重ねてのご回答恐れ入ります。見事に解決しました。

この春からパソコンが変わってエクセルも2007になってしまい
戸惑うことばかりの中、
マクロの画面にいく手順として「開発」→「マクロ」→「編集」のみを
使っていました。
そうしますとマクロ無効の設定のためか「編集」ボタンが無効に
なっていますので、マクロのコードにも触れないものと思い込んでいました。

「Alt + F11」で問題なく開くことができ、
問題部分を取り除くことができました。
おかげさまで昨晩の労力を無駄にせずに済みます
ありがとうございます。

補足日時:2009/05/24 20:57
    • good
    • 0

何でこんなことを考えるのか、良くわからない。


普通に(完成までは手動で画面を選択し)やって、完成後画面シーケンスと言うか不要な下の画面を消す、を考えれば良いのでは。
ーー
下記が参考になれば。
Private Sub UserForm_Initialize()
MsgBox "エクセル画面を消す"
Application.Visible = False
End Sub
でフォームの表示と共にシート画面を隠す。
ーー
フォームをクリックする。
フォームを隠し、シート画面を表示。
Private Sub UserForm_Click()
MsgBox "エクセル画面を表示"
Application.Visible = True
Unload Me
Worksheets("sheet1").Activate
Application.VBE.MainWindow.Visible = False
End Sub
ーー
シートのSheet4をActivateすると
VBE画面を表示。
'Application.VBE.Window.Visible = Trueを生かすとコード画面。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet4" Then
MsgBox "VBE画面を表示"
Application.VBE.MainWindow.Visible = True
'Application.VBE.Window.Visible = True
End If
End Sub

この回答への補足

みなさま、ご回答ありがとうございます。

「マクロを実行させないように~」
ということでマクロの設定を
「警告を表示せずにすべてのマクロを無効にする」
「警告を表示してすべてのマクロを無効にする」
「デジタル署名されたマクロを除き、すべてのマクロを無効にする」
のいずれでも試してみましたが、
マクロが無効だとマクロの編集もできない状態でしか
ファイルが開けませんでした。

毎日少しづつ作っては保存していたので
「Application.Visible = False」を記入する前の
ファイルからやり直すことにしました。

> タスクマネージャーのプロセスでEXCEL.EXE を終了しなければなりません。

ご指摘いただかなければ気がつきませんでした。
フォームが終了してもエクセルが起動したままになってしまうんですね。
確認いたしました。

> 何でこんなことを考えるのか、良くわからない。

申し訳ありません。必要性から迫られてのことではなく、
こんな事もできるんだという好奇心からの行為でした。
仕事で使うマクロですが、締め切りに縛りがないのをよいことに
あれこれ試してみたくなっていました。

補足日時:2009/05/24 17:03
    • good
    • 0

こんにちは。



通常、Execl VBA経験者は、Application.Visible =False というコードは書きませんが、また、UserFormは、Terminateイベントを入れないままに、UserFormを閉じてはいけません。Excel Application は、残ったままになります。もし、そうしてしまった場合は、タスクマネージャーのプロセスでEXCEL.EXE を終了しなければなりません。

ご質問の
>フォームしか表示されないのでマクロの画面にいけません。

は、[スタート]メニューからExcelを起動して、Shiftキーを押しながら、該当のブックを開けるか、[スタート]メニューから、Ctrlキーを押しながら、Excelをを起動して、マクロを実行させないようにして開き、該当するブックを開けるかどちらかです。

しかし、本質的に、UserForm の表示だけで、起動-終了するには、おそらく、AddIn 型でないと不可能のような気がします。単独のブックのマクロだけで、起動で、アプリケーションの表示をしないのは可能でも、終了時には、今、いくつかの方法を試してみましたが、ハングします。

せいぜい、今のところは、このような方法しか思いつきません。
Private Sub UserForm_Terminate()
 Application.Visible = True
End Sub

AddIn型のマクロを作る必要があるのかは、お任せします。
    • good
    • 0

もっと良い方法があるかも知れませんが、プロセスの終了でExcelを閉じます。


タスクバーの何もないところで右クリックからタスクマネージャ-を起動
「プロセス」タブで、一覧からEXCEL.EXEをクリックして選択
「プロセスの終了」ボタンをクリックしてExcelを閉じる
再度、Excelを立ち上げ、「マクロは無効」で該当Bookを開く
Alt+F11でVBEを起動
Auto_Openマクロの
Application.Visible = False
を、削除するか
Application.Visible = True
にする。

# 余談
まず、Excel本体を起動
Alt+F11でVBEを起動
Excel本体の「ファイルを開く」から該当Bookを開く
ようにすれば今回のトラブルでも、VBEは開いているので
Application.Visible = True
することができ、Excelを再表示できる筈です。
    • good
    • 0

>フォームしか表示されないのでマクロの画面にいけません。


VBEを操作したいということですか?
フォームを閉じてはだめなのですか?
Excel本体は表示されているのですか?

コードを提示できないでしょうか。

この回答への補足

Auto_Openの中に
Application.Visible = False
を記入してからフォームを表示させています。

これでフォームのみの表示なってしまい
マクロのコードの画面を表示させられなくなりました。
(質問にも書き添えましたが。当然、エクセル本体は表示されていません。)

フォームのボタンなどにはまだ機能を割り振っていないので
身動きがとれません。

補足日時:2009/05/24 11:29
    • good
    • 0

ご質問を拝見いたしました。



さぞ、お困りのことと思います。
エクセルは詳しくありませんが、この手の操作方法としては、シフトキー、コントロールキー、またはF11、F8キーあたりを押しながら、立ち上げると、通常通り立ち上がる場合があります。
試してみてください。

参考までに
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング