• 締切済み

Excel VBAでユーザーフォームだけ表示したい

cj_moverの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

#3、お礼欄へのレスです。 > 追記いただいたコードを実行してみたところ、終了しては「マクロを有効にしますか?」の画面が表示される・・・という繰り返しになってしまいました。 Excel 2000、2003、2010、と3つの環境で、セキュリティレベルを変えながら動作確認していますが、 ご指摘のような状況は再現できませんでした。 原因を特定することはできませんが、他のイベントプロシージャを間接的に呼び出していたり、 何かしら、こちらから見えない記述が影響しているものと思われます。 > 実現したいことは「閉じたらその選択したものだけ閉じる」「開いたときはユーザーフォームだけが表示される」というごくシンプルなことなのです。 はい、#3は専ら、そのシンプルな要求に必要最低限の手数でお応えしたものです。 (Private Sub CommandButton99_Clickは保険のようなものです。) 動作の確認方法として、#3の記述を新規のブックに貼り付け、ユーザーフォームとコントロールを追加して 試してみては、、、と思います。 #3でも書きましたが、こちらとしては奨めるものでもないので、 諦めるのでしたら、特に返信頂かなくても結構ですが、 その場合は、本件質問を未解決のまま締切にしてください。 お役に立てなかったようで、すみません。

関連するQ&A

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

    ブックを閉じた時のユーザーフォームの位置を、次回ブックを開いた時に同じ位置で表示したいです。 以下のコードでユーザーフォームは閉じれないようになっています。 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then Cancel = True End If End Sub この場合でも、前回と同じ位置でのユーザーフォームの表示は可能でしょうか? 可能な場合はどのようにしたらいいでしょうか?

  • ユーザーフォームの切り替えについて・・・

    UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)

  • ExcelVBAユーザーフォームの終了方法

    ExcelVBAのユーザーフォームについて教えて下さい。 マルチページで作成し、アイコンをクリックしてファイルを開くと、マルチページのみが表示される仕様にしました。 <ThisWorkbook> Private Sub Workbook_Open() Application.Visible = False UserForm.MultiPage1.Value = 0 UserForm.Show End Sub そして、マルチページ内にボタンを配置して、そのボタンをクリックすると、マルチページが終了するとともに、マルチページが埋め込まれているExcelファイルを(他のExcelファイルが動作中はそれらは何もしないでそのまま)閉じたいのです。 <UserForm> Private Sub CommandButton_Click () Dim msg As String, title As String msg = "プログラムを終了します。よろしいですか?" title = "終了確認" Dim res As Integer res = MsgBox(msg, vbYesNo + vbInformation, title) If res = vbYes Then Unload Me End Sub と書いてみました。 マルチページの画面はExcelの作業画面なしに開きます。ボタンをクリックするとマルチページが終了します。 ですが、「マルチページが閉じてExcelの作業画面も表示されず、一見終了したように見えるが、タスクマネージャーのプロセスではEXCEL.EXEが動作している」ことがあったり(他にExcelファイルを開いていないときも同様です)、「マルチページ終了後にExcelの何もない作業画面が表示」されます。そのファイルを閉じてもよいのですが、せっかくマルチページで、単独のアプリのようにしているので、マルチページを閉じて、Excelを閉じて…という、二度手間的なことはしたくないと思っています。 マルチページに配置したボタンをクリックしただけで、マルチページを終了させ、マルチページが埋め込まれているExcelのみも正常に終了させることはできますでしょうか? ご教授頂きたくお願い致します。 ちなみに「×」ボタンでの終了はNGとしています。

  • ExcelVBA:フォームの閉じるボタン「×」を消す方法

    ExcelVBAで、ユーザーフォームの閉じるボタン「×」を使用できなくなる方法は以下のコードで教わったのですが「×」自体消す方法ってあるでしょうか? Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = 1 End Sub 回答よろしくお願いします。

  • エクセル97でのユーザーフォームについて

    エクセル97でのユーザーフォームについて教えて下さい (1) まず最初にユーザフォームを作成しました。 (2) エクセルオープン時にメニューバーにボタンを追加し、そのボタンを押すと   ユーザーフォームが表示されてくるという風に考えました。 ユーザーフォームは表示されるのですが、フォームに配置されているボタン等を 押してもまったく利きません(本来はメッセージが表示される) アクティブにはなっているようなのですが... Private Sub UserForm_Activate() End Sub 上のアクティブになった時に何か処理をもりこまなければいけないのでしょうか? 初歩的な質問で申し訳ないのですが、宜しくお願い致します。

  • EXCEL VBAのユーザーフォームに引数を渡す方法について

    すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click()  m = 1  Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click()  m = 2  Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer)  UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click()   If m = 1 Then    MsgBox "ボタン2"   ElseIf m = 2 Then    MsgBox "ボタン2"   End If  Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。

  • エクセルVBA ユーザーフォームのボタン

    ユーザーフォームにCommandButton1があります ワークシートにもCommandButton2があります ユーザーフォーム上のCommandButton1をクリックすることで、ワークシート上のCommandButton2をクリックするという命令は作れるのでしょうか? ワークシート上のCommandButton2をクリックした後の命令は出来ているのですが、そのコードをコピーしてユーザーフォーム上のCommandButton1のコードにコピーするしかないのでしょうか? 実行ボタン(CommandButton2)をワークシートに作成したので、 ユーザーフォームで入力→ ユーザーフォーム上のボタン(CommandButton1)をクリック→ ユーザーフォームは終了→ ワークシート上の実行ボタン(CommandButton2)をクリック してくれると良いかと思いました よろしくお願いします

  • フォームのボタンからのみexcelを終了したい

    おねがいします。 都合上、フォームのボタンからだけexcelを終了したのです。 Private Sub CommandButton1_Click() Application.DisplayAlerts=False Application.Quit End Sub それに伴い、 右上のexcelのxボタン、シートのxボタンを無効化または非表示にしたいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean)      If CloseMode = 0 Then     Cancel = 1   End If End Sub これで、エクセルxボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。

  • エクセルユーザーフォームで困ってます。

    エクセル初心者です。 自分のユーザーフォーム(住所、商品登録)を作りたくて大変困ってます。 下記は、ネットなどをみて貼り付けたのですが、上手くいきません。 まずTOPページを作り、ユーザーフォームを呼び出すボタンを作り、クリックすると フォームが出るようにしてあります。 そこに、自分の入力したいものをユーザーフォームにテキストでつくり、シート9に 登録ボタンを作りクリックしたら、シートに反映させたいと思ってます。 登録ボタンを押したら、入力画面はクリアにしたいです。 他にいろいろやりたい事もあるのですが、入力した順番に001・002・003と顧客番号をつけたり 検索ボタンを作って、名前や、顧客番号を入れると情報を呼び出したり、請求書用のプリントシートや、封筒シートに簡単に反映できればと思っています。 しかし、まだまだそこまではいかず、最初でつまずいてます。 現状は、フォームを呼び出すときに実行時エラーがでます。 どうしても、自分の使い勝手のいいものを作りたいので どうか、助けてください。大変まいってます。 長文になりますが、どうかよろしくお願いします。 下記の入力中のものをみていただけて、いろいろ意見をいただけるとありがたいです。 Sub FormShow() UserForm1.Show End Sub 'Sheet9へ書き込む Private Sub 登録_Click() Dim i As Integer With Worksheets(9) 'テキストボックスの値を書き出し For i = 1 To 80 .Range("B" & i) = UserForm1.Controls("TextBox" & i).Text Next End With End Sub 'Formを呼び出したとき、Sheet9から読み込む Private Sub UserForm_Initialize() Dim i As Integer With Worksheets(9) 'テキストボックスの値を読み込み For i = 1 To 80 UserForm1.Controls("TextBox" & i).Text = .Range("B" & i) Next End With End Sub '終了ボタン Private Sub CommandButton2_Click() Unload Me End Sub

  • [VBA]呼び出したユーザーフォームのみを消すには

    「main」というユーザーフォームがあります。 フォーム内には「呼出」というボタンが配置されていています。 これを押すと「sub.show」が実行されて、subというユーザーフォームも表示されます。 この状態でsubフォームの[x]ボタンを押すと、mainフォームも消えてしまいます。 mainフォームを消さずにsubフォームのみを消すにはどうすればよいでしょうか。 それと、このような質問のカテゴリーはプログラミング内の「Visual Basic」と「その他」のどちらが適切でしょうか。