• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Powerpoint 2003 でのVBA UserFormの表示方法)

Powerpoint 2003でのVBA UserFormの表示方法

このQ&Aのポイント
  • PowerpointのVBA UserFormの表示方法について解説します。
  • ツールバーにボタンを追加し、UserFormを表示する方法を説明します。
  • ModalからModelessにUserFormを修正する際に表示されない問題の解決方法を紹介します。

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

  • ベストアンサー
  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.1

 確かにファイルを開いていないと 一瞬でユーザーフォームが消えますね。 Application.Run を使ってもだめ。 Excelとはまったく違う動作です。 でも、それほど困ることはないのと思うのですが。 モーダルでも、その間PowerPointの編集ができない だけで、ExcelやWordには切り替えられるので。  どうしてもモードレスでというのなら、 以下のような方法があるかもしれません。 ●標準モジュール Public myFlg As Boolean Sub test() UserForm1.Show vbModeless Do Until myFlg = True DoEvents Loop End Sub ●UserForm1 Private Sub CommandButton1_Click() Me.Hide MsgBox "OK" myFlg = True Unload Me End Sub Private Sub UserForm_Terminate() myFlg = True End Sub ※ループの間の動作がもたつくときは、 ●標準モジュール Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public myFlg As Boolean Sub test2() UserForm1.Show vbModeless Do Until myFlg = True Sleep (500) '←数字調整 DoEvents Loop End Sub

peccora
質問者

お礼

ご指示通りの記述でちゃんと表示され、実行結果を変数に代入することができました。 どうもありがとうございました。助かりました。

peccora
質問者

補足

ご丁寧なご助言どうもありがとうございました。実はModelessでUserFormが開いている間にPowerpoint上で特定の操作をユーザーにしてもらい、それが終了した段階でUserFormのOKを押してもらう、ということをしたかったのでした。 ご提案いただいた方法を利用して試してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Personal.xlsでUserFormを開く

    Personal.xlsに登録したマクロでBookのUserFormを開くには? 環境:EXCEL2000 Windows7 Book1.xlsにUserForm1を作りました。 Book2.xlsにもUserForm1を作りました。 (Book1のUserForm1とBook2のUserForm1は異なるForm) Personal.xlsに次のSubを追加しました Public Sub DispForm1() ActiveWorkbook.UserForm1.Show vbModeless End Sub ツールバーに釦を追加しマクロ「DispForm1」を登録しました やりたい事 (1)Book1を開き釦を押すとBook1のUserForm1を表示する (2)Book2を開き釦を押すとBook2のUserForm1を表示する 問題点 釦を押すと 「オブジェクトは、このプロパティまたはメソッドをサポートしていません」 のエラーがでる アドバイスよろしくお願いいたします。

  • 2つのユーザーフォームの表示切替(Excel2002VBA)

    Excel2002VBAを使用しています。 UserForm1 に CommandButton1 を配置したものと UserForm2 に CommandButton2 を配置したもの があります。 UserForm1が表示されている時、CommandButton1 を クリックすると、UserForm2 が表示され UserForm1 が非表示になり、 UserForm2 が表示されている時  CommandButton2 をクリックすると UserForm1 が 表示され UserForm2 が非表示になる というように 画面上にどちらか一方だけユーザーフォームを表示 させたいのですが上手くいきません。 CommandButton1 の Clickイベントに UserForm2.show vbmodeless Unload UserForm1 CommandButton2 の Clickイベントに UserForm1.show vbmodeless Unload UserForm2 と記述したのですが、実行すると、 ”このオブジェクトは、ロードまたはアンロード することはできません。”とエラー表示が出てき ます。 何とぞご教授よろしくお願いいたします。

  • マクロ実行中のメッセージ表示

    お世話になります。 Excel2000マクロ実行中に、「処理中です」等のメッセージを表示したいのです。メッセージのUserFormを作成しましたが、マクロ実行中は、Caption(Formのタイトル部分)以外は、Formが白く表示されるだけです。ステップインで確認する時は正常に表示されます。 コードは、標準モジュールに UserForm1.Show (0) としました。 よろしくお願いいたします。 ※UserFormを使用する以外にも、メッセージを表示する方法があれば、それでも結構です。

  • Visual BasicのUserFormが閉じづらい

    Excel2000,VisualBasicのUserFormの閉じ方で困っています。 マクロ起動中にUserForm1.Show,UserForm1.Hide,UserForm2.Show,UserForm2.Hideを 何度も繰り返していると、同じUserFormが重複してメモリーに残っている 状態で、閉じるために「×」を何度もクリックしています。 作業を長時間するとフリーズ状態もしくはエラーになります。 尚、Load.Unloadでも同じ結果になりました。 どなたか解決方法を教えてください、宜しくお願いします。

  • エクセルのマクロでUserForm1を作って下記のようなコードを実行す

    エクセルのマクロでUserForm1を作って下記のようなコードを実行すると UserForm1を一瞬だけ表示して消えるのかと思ったのですが、表示されたまま消えません。 Unload UserForm1のところを UserForm1.Hideにしても同じです。 表示されたUserForm1を閉じるにはどうしたらよいですか。 Sub test() UserForm1.Show Unload UserForm1 End Sub

  • VBAでユーザーフォームの表示を確認

    VBAでユーザーフォームが表示されていなかったら UserForm1.Show vbModeless で表示させるようなプログラムを組みたいのですが 表示されているかどうかはそのようなコードで調べることができますでしょうか?

  • EXCEL VBA UserFormで困っています。

    EXCEL VBA UserFormで困っています。 VBAプログラミングで以下のような現象が起こります。 開発環境  WinXP , EXCEL2003 ブックを起動するとメニューが表示され、そこからボタンを押すとuserform1が表示されるというプログラムなんですが、そのボタンを押してuserform1を起動しようとすると『問題が発生したため、  Microsoft Excel Windowsを終了します。・・・ エラー報告を送信する 送信しない』のメッセージが出て起動できない。 UserForm1.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 過去に似た質問を見つけ、そのアドバイスを元に以下を試してみました。 http://okwave.jp/qa/q2001805.html ・エラーの発生行の特定 userform1.showの前に、userform1.label.visible=falseのように、表示、非表示を切り替える命令を出しており、どうやらその表示命令の行でつまづいている事がわかりました。 表示命令を全て消去し実行したところ、現在までは問題なく起動できています。 ・on timeメソッドで時間差をつける ラベルやボタンの表示、非表示命令行をまとめて、 Application.OnTime Now + TimeValue("00:00:01"), "ラベルボタン表示設定" userform1.show といった形で時間差をつけてみました。 結果として、userform1自体は立ち上がるようになったのですが、時間差で実行される"ラベルボタン表示設定"の実行時に「オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました。」と出てくるようになってしまいました。 ラベルはまだ良いのですが、コマンドボタンの表示、非表示は、誤操作を防ぐ手段として非常に重要です。なんとかエラーを出さずにコード通りに起動する方法はありませんでしょうか。

  • VBAでUserFormでProgressBarとLabelを同時表示できない理由は?

    VBAでUserFormをつかってProgressBarとLabelを同時に表示させる。つもりでしたが、ProgressBarが満たされた後Labelが表示されます。その理由と対策を教えて下さい。そのコードを以下に示します。 Sub a() With UserForm1 .Show vbModeless .Label1 = "始めのテキスト" End With s = 1 e = 20000 For i = s To e UserForm1.Label1 = "始めのテキスト" UserForm1.ProgressBar1.Value = i / e * 1000 Next i End Sub お願いします。

  • マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。

    エクセル2003VBAで、マクロ実行時にユーザーフォームを モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。 しかし、処理が追いついていないのか、そのラベルが表示されません。 ユーザーフォームにはコードを記述していません。コードは以下のみです。 UserForm1.Show vbModeless テキストをTrueにしてからマクロ処理のようなコードがあるのでしょうか? お手数をおかけしますが、解決方法をご存知の方よろしくお願いいたします。

  • UserFormの呼出について

    VBAで「出退勤時間管理」のプログラムを作っています。 各種の初期値、設定値をユーザーフォームで入力するのですが、 フォームを出すとき(ツールバーにマクロを登録しています。) 「アプリケーション定義またはオブジェクト定義のエラーです。」と出ます。 ツールバーに登録したマクロは、標準モジュールに記述しています。 試しに、別のエクセルファイルで簡単なマクロを組んでみました。 フォームにテキストボックスを貼り付け、標準モジュールにこれを呼び出すマクロを記述しました。 ---- 標準モジュール------ Private sub OpenForm() UserForm1.TextBox1.Text = "No Problem !!!" UserForm1.Show End sub ------------------------- これはうまくいきました。 全くエラーはでません。 同じように書いたコードが、片方はエラーが出ることが、さっぱりわかりません。 本体のコードは、結構多くファイルサイズが647kBになっています。 コードの量の制限とか、あるのでしょうか。 どなたか詳しい方、助言をお願い致します。

専門家に質問してみよう