• ベストアンサー

ExcelVBA ユーザーフォーム

エクセルのユーザーフォームで、フォームを閉じることに制限をかけることは可能ですか? AccessフォームやVBにある'CloseButton'というプロパティが無いようですが。。

noname#2826
noname#2826

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ユーザーフォームのQueryCloseイベントで出来ると思います。 このイベントの引数のCancelにTrueを代入すればフォームを閉じることをキャンセル出来ます。 また、もう1つの引数CloseModeはどういう手段でフォームを閉じようとしているかのフラグですので、例えばフォームのコントロールボックスの[閉じる]ボタン(右上の[×]ボタン)では閉じないようにするには、 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)   If (CloseMode = vbFormControlMenu) Then     Cancel = True   End If End Sub となります。 これを、あるセルの値を参照して判断するなど、応用すればいいと思います。 では。

noname#2826
質問者

お礼

助かりました。ありがとうございます。 何かありましたら、またお願いします。

関連するQ&A

  • ExcelVBA ユーザーフォームのコードがない

    いつもお世話になっています。 Excel vbaで質問させてください。 あるExcelブック(test.xlsとします)を開くと、ユーザーフォーム(と思う)が表示されます。 (この時、Excelアプリケーションは「表示」されていてモーダルの状態です) ユーザーフォームで日付を選び、「これでOK」ボタンをクリックすると 新規ブックとして「text_0614.xls」が出来て、これが表示ブックとなります。 (元のtest.xlsは閉じられています) vbaコードの修正がしたくて、VBEから作業しようとしたところ ユーザーフォームモジュールも、標準モジュールも何も見当たりません。 Thisworkbookのイベントも何も書いてありません。 プロジェクトにパスワードがかかっているのかと思いましたが、もしそうだとしても プロジェクトウィンドウに、「フォーム」というフォルダは表示されると思いますし、 また、ダブルクリックしてもパスワードを求められることがありませんので パスワードがかかっているようには見えません。 これはExcelVBAのユーザーフォームじゃないのでしょうか?(VB?) または、もし、この「フォーム」フォルダごと、ユーザーに見せないやり方があるのでしょうか? どなたかご存知の方いらっしゃいましたらご教示ください! WinXP SP3 Excel2003 SP3 使用です。 どうぞよろしくお願いします。

  • 「ユーザーフォーム」と「フォーム」

    素朴な疑問なのですが、 なぜエクセルでフォームの読み方は「ユーザーフォーム」なのに、 アクセスでは「フォーム」なのですか?

  • ユーザーフォームのコピー?

    エクセルのVBでユーザーフォームをコピーしたいのですが。 例えば、「ユーザーフォーム1」と「ユーザーフォーム2」を同じ形式で作成し、リンクするセルのみを変えたいのです。 今は、それぞれのコントロールをコピーしてます。 いい方法ありますか?というか可能ですか?

  • ExcelVBA ユーザーフォームのオブジェクト名

    ExcelVBA ユーザーフォームのオブジェクト名について質問です。 Excel2003で、あるユーザーフォームのオブジェクト名を「ユーザーフォーム表示中」とし、 ユーザーフォーム表示中.Showで表示するように記述しました。 何度かテストを済ませ、他のプログラムも含めて完成したと思ったのですが、他のPCでエラー報告があり、コードを確認したところ、なぜか、ユーザーフォーム表示.Show(中の字が消えている)になっていました。 もちろん誰かが記述を変更することは考えられません。 以前、自分のPC内でも同じようなことがあり、いくら原因を探しても見つからず、ユーザーフォームのオブジェクト名を削除された記述に合わせて対処したことがあります。 これは何が原因なのでしょうか。 文字数制限か何かあるのでしょうか。

  • ExcelVBAでユーザーフォームが勝手に閉じてしまいます。

    ExcelVBAでユーザーフォームが勝手に閉じてしまいます。 ExcelVBAを独学で始めてまだ2週間足らずの超初心者です。 Excelワークシートにコマンドボタン配置してそのコマンドボタンを押すとユーザーフォーム1が開き、ユーザーフォーム1に配置してあるリストボックスからリストをダブルクリックで選択すると、ユーザーフォーム2が開くように設定しています。ただ、ユーザーフォーム1のリストをダブルクリックして選択した時点でユーザーフォーム1が勝手に閉じてしまいます。ユーザーフォーム1を勝手に閉じさせないでコマンドボタンで閉じるようにしたいのですがどうしたらよいのでしょうか。レベルの低い質問かもしれませんが困っています。宜しくお願い致します。

  • ユーザフォームの印刷

    ユーザフォームの印刷 Excelでユーザフォームを完成させましたが、ユーザーフォーム実行後のフォーム全体を印刷したいのですができません。コマンドボタンに印刷するためのコーディングしたいのですが、ご教示いただけませんか。(VB初心者) 用紙サイズは4、横向けです。

  • エクセルのユーザーフォーム

    アクセスのフォーム上でコマンドボタン等のコントロールをアクティブにして 矢印キーを押すと、該当のコントロールが移動しますが、 エクセルのユーザーフォーム上ではこの動作が出来ません。 なぜですか? 「エクセルだから」でしょうか? そもそも「フォーム」と「ユーザーフォーム」は別物と考えればいいのでしょうか?

  • Excel 閉じたユーザーフォームの再呼出し

    まいったまいった VBAの初心者です。 Excelでブックを開いたとき自動で呼び出したユーザーフォームを、いったん閉じてから、 もういちど編集のために VB Editoer に呼び出すにはどうしたらよいのでしょう。 教えて下さい。よろしくお願いします。

  • ショートカットでユーザーフォームを閉じる方法は?

    エクセル ショートカットでユーザーフォームを閉じる方法は? ctrl+wでは消えませんでした。 アクセスの場合はこのショートカットキーでフォームを閉じることができます。

  • ユーザーフォーム

    エクセルでユーザーフォーム上にコマンドボタンを配置し、特定のコマンドボタンを押した時に、他のユーザーフォームを呼び出せるようにしたいのですが、どうしたらいいのでしょうか。

専門家に質問してみよう