• 締切済み

フォームのアクティブと非アクティブ表示について

y_anの回答

  • y_an
  • ベストアンサー率57% (24/42)
回答No.4

私の環境ではそのような現象は起きません。 何度も Form1 <-> Form2 をやっても 両フォームともちゃんとアクティブ状態になります。 なので、環境のせいではないでしょうか? 使用しているOS及び、VBのバージョン、サービスパック等は どのようになっていますか? 最新のサービスパックはあたっていますか? ちなみに私の環境は以下の通りです。 OS:WinNT4.0 SP6a VB:Ver6.0 SP5 IE:Ver5.5

関連するQ&A

  • 別フォームの呼び出し

    6.0でやってます。 form1からform2を呼び出す時、Command1_Clickの処理内で Set FORM = New form2 Call FORM.Show と書いて、form2が呼び出されたらYesNoメッセージボックスを表示し、 Yesを押したらform1のPublicプロシージャに飛んでからform2をUnloadし、Noだったらform2をUnloadするプログラムを作りたいのですが、クリックするとform2が表示されずに、メッセージボックスだけが表示されて、YesNoを選択した後でform2が表示されてしまいます。 それに、Call FORM.Showの処理に行くと、"既にアンロードされています"といったエラーが出ます。 書く順番がおかしいのでしょうか? *****form1のコード******* Private Sub Command1_Click() Set FORM = New form2 Call FORM.Show End Sub Public sub aaa() (処理) End Sub *****form2のコード****** Private Sub Form_Load() msg = MsgBox("戻りますか??", 4, "確認メッセージ") If msg = vbYes Then Form1.aaa Unload Me Else Unload Me End If

  • クリックした場所にFormを開く

    教えてください! VBでクリックした場所にFormを開くには、どうしたらいいですか? Private Sub Command3_Click() Frm.Show End Sub

  • モーダルで開いたウインドウの最小化動作について

    いつもお世話になっております。 表題の件なのですが、開いたウインドウ側の最小化ボタンを押すと、 タスクバーの左上(スタートメニューの上)に最小化されてしまいます。 下こんな感じで呼び出した場合のForm2の挙動 Private Sub Command1_Click() Form2.Show vbModal End Sub これを従来どおりタスクバーの中に表示させるには どの様にすればよろしいのでしょうか。 ご存知の方がいらっしゃいましたらご教授いただければ 幸いに存じます。 以上、よろしくお願いいたします。

  • エクセルのユーザーフォームでご教授ください

    マクロの知識はほぼなく、調べながらエクセルの入力用のユーザーフォームを作りましたが、うまく作動しません。 UserForm1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Private Declare Function ReleaseCapture Lib "user32" _ () As Long Private Sub UserForm_Initialize() Me.Show End Sub Private Sub Button_cxl_Click() Me.Hide End Sub Private Sub ok_Click() Dim RowNum As Long Dim Ctrl As Control RowNum = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(RowNum, 1).Value = Me.txt_date Cells(RowNum, 2).Value = Me.txt_guest Cells(RowNum, 3).Value = Me.txt_person Cells(RowNum, 4).Value = Me.txt_begin Cells(RowNum, 5).Value = Me.txt_finish For Each Ctrl In Me.Controls If Ctrl.Name Like "txt*" Then Ctrl.Value = "" RowNum = 0 End If Next Ctrl Me.Hide ReleaseCapture UserForm2.Show vbModal End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ UserForm2 ~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Private Declare Function ReleaseCapture Lib "user32" _ () As Long Private Sub UserForm_Initialize() End Sub Private Sub ButtonEnd_Click() Unload Me UserForm1.Hide End Sub Private Sub ButtonNext_Click() Unload Me ReleaseCapture UserForm1.Show vbModal End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ Module1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Sub ユーザーフォーム() UserForm1.Show End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ UserForm1を開き、Button_cxlで閉じず、もう一度Button_cxlをクリックで閉じる。 UserForm1を開き、Button_okでUserForm2を出し、ButtonEndをクリックでUserForm1にもどる(1と2を数度行き来しても同じ) UserForm1を開き、Button_okでUserForm2を出しButtonNextをクリックでUserForm1にもどりButton_cxlをクリックで閉じず、もう一度クリックしても閉じず、三回目で閉じる。 現状、エクセルを開いた直後のみで発生してます。 一度ユーザーフォームを出し、閉じたあとは意図通り動き、再度エクセルを開くまで発生しません。 ちなみにUserForm2の Private Sub ButtonEnd_Click() Unload Me UserForm1.Hide End Sub 部分の、UserForm1.HideをUnload UserForm1にすると、「オブジェクト変数または With ブロック変数が設定されていません」と出てデバックでModule1の UserForm1.Show が黄色になります。 どこが悪いか教えてください。

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • [VB6]オーナーウィンドウを設定したShowメソッド

    こんにちは。 XP(SP2),VB6(SP6)で 親フォーム -> 子ダイアログ -> 孫ダイアログを表示する処理を作成し実行すると、 子ダイアログを閉じた際、親フォームが他のアプリケーションの下 にもぐってしまいます。 (例えばメモ帳上で実行して、子ダイアログを閉じた時にメモ帳の下に隠れてしまう、デバッグ時ならばVBの下に隠れる) 孫ダイアログを表示させずに、子を閉じるとこの様に減少は起こりません。 なぜこの様になるのでしょうか? 又、回避策はあるでしょうか?ご存じの方、教えてください。 以下、現象再現用のテストプログラムです。 親フォーム Private Sub Command1_Click() dlg1.Show vbModeless, Me End Sub 子ダイアログ(dlg1) Private Sub Command1_Click() dlg2.Show vbModal, Me End Sub Private Sub CancelButton_Click() Unload Me End Sub 孫ダイアログ(dlg2) Private Sub CancelButton_Click() Unload Me End Sub

  • 隠していたユーザーフォームを再び表示したい

    ExcelVBA をExcel2007で苦戦している初心者です。 マクロ記載のAブックとBブックを使っています。 Aブックのユーザーフォーム「表紙」にあるボタンをクリックして Private Sub CommandButton11_Click() 表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\改善案.xlsm" Sheets(1).Select End Sub Bブック(改善案)に飛び、作業後これを閉じ、Aブックに戻したいです。 Aブックは、まだ閉じてはいません。 同時に、ユーザーフォーム「表紙」を再表示したいです。 Private Sub CommandButton2_Click() Unload UserForm1 Application.DisplayAlerts = False ThisWorkbook.Close Application.DisplayAlerts = True 表紙.show End Sub すると次のエラーが表示され 「コンパイルエラー 変数が定義されていません」 表紙.showの表紙が反転表示されます。 Aブックに戻ったときにユーザーフォーム「表紙」を表示するには どうしたらよろしいでしょうか。よろしくお願いします。

  • "Enterキー"で閉じる方法…

    お世話になります。 VB初心者&独学でどうしても解けない問題があり、是非、お知恵をお貸し頂けたらと思います。 アラームを作ろうと思い、下記のようなプログラムを作りました。(簡略版) 指定した時間になるとForm2が開かれ、"OK"ボタンで閉じるという単純なものです。 ここで問題が発生したのですがアプリケーションがアクティブ(選択されている)状態だとForm2もアクティブ状態になり"Enterキー"で閉じることが出来ますが、非アクティブ状態ですとForm2も非アクティブ状態で開かれ、タスクバーが点滅して"Enterキー"で閉じれず一度マウスでクリックしてアクティブにしてからではないと閉じれません。 SetActiveWindowや、SetForcusなどでアクティブしても見た目はアクティブになっていますが、"Enterキー"で閉じることが出来ません。 メインForm1が非アクティブ状態でもForm2がアクティブになり、"Enterキー"だけで閉じる方法は無いでしょうか…。 まとまりの無い文章で難解かと思いますが、宜しく御願いします。 (VB6.0、Windows2000) *Form1* Private Sub Form_Load() Me.Timer1.Interval = 500 End Sub Private Sub Timer1_Timer() If Format(Now, "hh:mm:ss") = "12:00:00" Then Form2.Show End If End Sub *Form2* Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() Form2.Command1.Caption = "閉じます" End Sub

  • VB2010 フォームのリロード

    今までVB6.0でプログラミングをしていた者で、最近VB2010に開発環境を変えました。さっそくソフトを開発しているのですが、フォームのリロードが必要なところがあったためそこのプログラムをネットなどで参考にして書いてみたのですがどうしてもエラーがでます。 今までVB6.0ではその部分を Private Sub Command1_Click() Set Form1 = Nothing Call Unload(Me) Form1.Show End Sub と、記載していました。これをVB2010のコードに書き換えるとどのようになるのでしょうか。 ご回答よろしくお願いいたします。

  • vaSpreadの表示が消えてしまいます。

    VBの初心者です。よろしくお願いします。 VB6.0とvaSpread3.0を使用しています。 1度Spreadに表示した値が、新たな値を(1行下に)表示した際に消えてしまいます。 1度表示したものを残したまま、新たな行に値を追加していきたいのですが、何か方法はありますでしょうか? -------------行いたい動作------------- ・Form1.vaSpread1のチェックボックスの値(1or0)をForm1.Command1クリック後、Form2.vaSpread2に表示。 ・Form2.Command2を押すとForm1を表示し、再度チェックボックスを押せる状態にし、Form1.Command1を押すとForm2.vaSpread2の次の行に値を前回のチェック分を表示したまま追加表示したい。 この動作の繰り返し。 -------------コード------------- 【標準モジュール/Module1】 Public Row As Integer Public check As Integer 【Form1】 Private Sub Command1_Click()   vaSpread1.Row = 1 'チェックボックスのセル位置(行)   vaSpread1.Col = 2 'チェックボックスのセル位置(列)   Module1.check = Val(vaSpread1.Text)   Form2.Show End Sub 【Form2】 Private Sub Form_Load()   Call spreadShow End Sub Private Sub spreadShow()   vaSpread2.Row = Module1.Row + 1 '値を表示するセル指定(行)   vaSpread2.Col = 1 '値を表示するセル指定(列)   vaSpread2.Value = Module1.check End Sub Private Sub Command1_Click()   Form1.vaSpread1.Row = 1 'チェックボックスのセル位置(行)   Form1.vaSpread1.Col = 2 'チェックボックスのセル位置(行)   Form1.vaSpread1.Text = 0 'チェックボックスを元に戻す   Module1.Row = Module1.Row + 1   Form1.Show   Unload Form2 End Sub それとも、下記コードでは消してしまうような動作をしているのでしょうか? よろしくお願いいたします。