Form1からForm2を表示するという処理を以下のようにコーディングしてみました。

**Form1.frm***

Private Sub Command1_Click()
Form1.Hide
Form1.vbModal
Form1.Show
End Sub

**Form2.frm***
Private Sub Command1_Click()
Unlaod Me
End Sub

画面にエクスプローラ等のウィンドウが表示されているときに、Form2を表示させようとすると非アクティブ状態で表示されてしまいます。
また、Form2をUnloadするとForm1が表示されるのですが、その際に、Form1のタイトルと、タスクバーに表示されているボタンが反転した後非アクティブ状態になってしまいます。

フォームは常にアクティブで表示させたいのですが、どうすればよいのでしょうか?

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

A 回答 (4件)

私の環境ではそのような現象は起きません。


何度も Form1 <-> Form2 をやっても
両フォームともちゃんとアクティブ状態になります。
なので、環境のせいではないでしょうか?
使用しているOS及び、VBのバージョン、サービスパック等は
どのようになっていますか?
最新のサービスパックはあたっていますか?

ちなみに私の環境は以下の通りです。
OS:WinNT4.0 SP6a
VB:Ver6.0 SP5
IE:Ver5.5
    • good
    • 0

多分、Form1をHideした時点で、そのアプリケーションには


画面が一つもない状態になるので、別アプリにフォーカス
が移動してしまいます。
そこからForm2を表示するので、Form2が非アクティブな状
態で表示されてしまうのでしょう。

で、Form1を消すつもりならForm1をModalで表示する必要
はないと思います。

**Form1.frm***
Private Sub Command1_Click()
  Form2.Show vbModeless
  Form1.Hide
End Sub

**Form2.frm***
Private Sub Command1_Click()
  Unload Me
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  Form1.Show
End Sub

で、どうでしょうか?
    • good
    • 0

j_euro ふたたびです。



そいで・・
これ
>From2のUnloadの直前に
>Form1.SetFocus
は、どうでしたか?

つまり、ここを
>>**Form2.frm***
>>Private Sub Command1_Click()
>>Unlaod Me
>>End Sub

こうやる
**Form2.frm***
Private Sub Command1_Click()
Form1.SetFocus
Unlaod Me
End Sub

すなわち
>フォームは常にアクティブ
(「常に前面」じゃなくてね)
のためには、他のフォームが終わるときに、目的のフォームにフォーカスをセットする。
    • good
    • 0

えと、やりたいことと、現状がまだよくわからないので、当てずっぽうなんですけど・・・



From2のUnloadの直前に
Form1.SetFocus
してみたらどう?

これは、

>Private Sub Command1_Click()
>Form1.Hide
>Form1.vbModal
>Form1.Show
>End Sub

こうなのかな?

Private Sub Command1_Click()
Form1.Hide
Form2.Show vbModal
End Sub

当たった?

この回答への補足

すいません。コード書き間違えてました・・・。

Private Sub Command1_Click()
Form1.Hide
Form2.Show vbModal
Form1.Show
End Sub

でした。

補足日時:2001/06/19 17:48
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qプロアクティブの意味、例

仕事をする上で「プロアクティブに」、というのはどんな意味でしょう。

辞書レベルの意味はわかります。

仕事をする上で具体的にこんなのがプロアクティブな仕事、という例があれば教えてください

Aベストアンサー

http://www.amazon.co.jp/%E3%80%8C%E5%85%88%E8%AA%AD%E3%81%BF%E5%8A%9B%E3%80%8D%E3%81%A7%E4%BA%BA%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99-~%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%AD%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%BB%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88~-%E6%9D%91%E4%B8%AD-%E5%89%9B%E5%BF%97/dp/4534043708

上のサイトの本が役に立ちそうです。
抜粋すると、
「先読み力」で無理・ムダなく推測し、「プロアクティブ」に行動すれば、常識はずれの残業時間、不要なトラブルに巻き込まれなくなり・・・・

http://www.amazon.co.jp/%E3%80%8C%E5%85%88%E8%AA%AD%E3%81%BF%E5%8A%9B%E3%80%8D%E3%81%A7%E4%BA%BA%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99-~%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%AD%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%BB%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88~-%E6%9D%91%E4%B8%AD-%E5%89%9B%E5%BF%97/dp/4534043708

上のサイトの本が役に立ちそうです。
抜粋すると、
「先読み力」で無理・ムダなく推測し、「...続きを読む

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。

Qアクティブの意味教えてください。

アクティブの意味教えてください。

Aベストアンサー

「活動的な」「活発な」形容詞。

QExcel VBA: private sub 内の変数の値を Sub へ渡すには

VBA初心者です。private sub 内で条件に合致した変数の値をSubへ渡すにはどうしたらよいのでしょう。下記を見ていただければやりたいことの意図は伝わるかと思います。private sub内の変数が多分private sub内のみでしか参照出来ないからだとは思いますが、うまくいきません。グローバル変数化みたいなことが出来るのでしょうか。

Sub Find_OK()
MsgBox "条件に合致したのは" & var1 & "です。"
End Sub

Private Sub Worksheet_Calculate()
Dim var1
 For var1 = 1 to 10
 If var1 > 8 Then Call Find_OK
End If
Next
End Sub

Aベストアンサー

Sub Find_OK(var1)
MsgBox "条件に合致したのは" & var1 & "です。"
End Sub

Private Sub Worksheet_Calculate()
Dim var1
 For var1 = 1 to 10
 If var1 > 8 Then Call Find_OK(var1)
End If
Next
End Sub

Qプッシュアウトとアクティブの意味。

またまたゴルフで申し訳ありません。プッシュアウトというゴルフボールの球筋がありますが、右に出て正面に帰って来ず、行きっぱなしのボールのことですが、俗にスライスはボールを捉えきれて無く、飛距離が出ないと言われますが、プッシュアウトはスライスとは違い、方向性は今一つですが、ボールは捉えているので、飛距離はフックボールと変わらないのでしょうか?やはり若干とは言え、フックボールのほうが飛距離は出るのでしょうか?またタイガーウッズは昔、かなりのフックグリップでしたが、(左手をフックに握る事により、より[アクティブ]になると言ってますが、このアクティブとはどのような意味でしょうか?かなりフックに握った結果がプッシュアウトでした。

Aベストアンサー

こんにちは。

振り遅れた(フェースターンが遅れた)プッシュではなく、いつもより軌道がインサイドから入ってきて結果的に右方向へストレートに飛び出したボールの飛距離はナイスショットと遜色ありません。

私は先輩ゴルファーに絶対に左に行かせたくないときにそのような打ち方をする事を勧められ実践しています。アウトサイドインのカット軌道で打ってもいいのですが、実際コースでは左に振りぬくよりも安全なサイドにヘッドを抜いていくほうが遥かに気が楽です。びくびくしながらカットに打って体が止まった場合には「真っ直ぐ左」なんてこともありますから。

カット打ちが得意な人は人いいでしょうが、ボールを少し体の中に入れて外に振り出す打ち方はよく飛んで、左も怖くなくなります。パーシモンで糸巻きボールでは大フックになったかもしれませんが、今の道具では、ミスしてもフェアウエーの左サイドに行くくらいで、とても便利な打ち方だと感じて、自分自身は多用しています。なにより、カット打ちよりはるかに飛びますし。

プッシュとフックの飛距離の差ですか?難しいですね。
1~2yの曲がり幅のドローが一番飛ぶと感じますが、諸条件にもよりますがフックで5y以上曲がったらプッシュの方が飛ぶんじゃないでしょうか。


最近の道具はフェードでもドローと遜色ないくらい飛びますし、日本で1.2の飛ばし屋・額賀プロも持ち球はストレートから若干フェード気味です。

こんにちは。

振り遅れた(フェースターンが遅れた)プッシュではなく、いつもより軌道がインサイドから入ってきて結果的に右方向へストレートに飛び出したボールの飛距離はナイスショットと遜色ありません。

私は先輩ゴルファーに絶対に左に行かせたくないときにそのような打ち方をする事を勧められ実践しています。アウトサイドインのカット軌道で打ってもいいのですが、実際コースでは左に振りぬくよりも安全なサイドにヘッドを抜いていくほうが遥かに気が楽です。びくびくしながらカットに打って体が止まっ...続きを読む

QEnd とUnload の違い

同じようにしか思えないのですが、漠然とした違いしか分りません。
どなたか明快に教えてくださる方いらっしゃいませんでしょうか?

Aベストアンサー

End はアプリケーション自体を終了させるステートメントです。
フォームをいくつ開いていようとアプリケーションは終了します。
つまり、ツールバーにある四角い終了ボタンと同じです。

一方、Unload はフォームを閉じるステートメントです。
フォームを閉じたとき、当該フォーム以外の開いている(Loadしている)フォームがなければ、アプリケーションも終了します。
要するに開いているフォームがなくなればアプリケーションは終了しますので、結果的にEndと同じようになります。

Qアクティブとアグレッシブのニュアンスの違いは?

アクティブとアグレッシブ、どちらも「活動的な」という意味で使われますが、この二つはどのように使い分けたらいいのでしょうか。

私的に、
アクティブは、行動を伴ったもの・とにかく動き回るイメージで、
アグレッシブは、なんというか・・・いろいろ考えたり計画を立てたりと、
単に行動に移すだけじゃなくてもっと深くて貪欲なイメージなんですけど・・・

伝わりづらくてすみません・・・

質問としては、
タイトルのとおり
アクティブとアグレッシブのニュアンスの違いを教えてください
というものです。
よろしくお願いします。

Aベストアンサー

こんにちは。
nnYnnさんのつかんでるニュアンスで、ほぼあっている気がします。

職場で英語を使う関係で私がもっているニュアンス的には、
「アクティブ」は「インドア」の対義語の様な感じで、
やはりいろいろ動きまわって行動する的に使います。
それに対し、「アグレッシブ」は対象物が1つかそれ以上で、
対象物に対して(意図的に)PUSHしていく感じかなと思います。

範囲の広さでいうと「アクティブ」の方が広いですし、
追求心の深さでいうと「アグレッシブ」の方が深いと思います。

私のニュアンス説明がわかりずらかったら、ごめんなさい

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

Qセルとアクティブセルの違い

技術の質問です。
セルとアクティブセルの違いって、
アクティブセルはリボンされている?というような解釈で
あってますでょうか…。
逆にセルはただのマスで、リボンされていない状態
という意味でしょうか?
あまり専門的な知識は必要ないので、
小学生にでもわかるくらいの簡単の説明でお願いします(-。-;
すいません
追記:カテゴリがよくわからず、間違っていたらすみません

Aベストアンサー

フォーカスがあたっているかどうかです。

つまり、カーソルが当たっていて、編集可能な状態にあるのがアクティブセル。
そうじゃないのはセルです。

QPrivate Subについて

VB初心者ですが質問させていただきます。
現在
Private Sub CommandButton1_Click()
で呼び出されている処理を、
コマンドラインからstart~.exeと入力して呼び出される(実行される)ようにするにはPrivate Subにてどのように記載してexeファイルを作成すればよいでしょうか??

何分初心者な者ですので概念に間違いがありましたら申し訳ございません。

よろしくお願いいたします。

Aベストアンサー

>Sub Main()
>Call Command1_Click
>End Sub
>とか出来なかったっけ?
できるはずがない。
Privateの範囲を考えればわかるはず

Public Sub Command1_Click()
にして
sub min側で
Call Form1.Command1_Click
呼び出せば動かないことはないけどイレギュラー的な
使い方すぎる。
それ考えれば
Command1_Clickイベント内をサブルーチン(関数化)して
それをsub mainとCommand1_Clickイベントから
呼び出して使うのが本来でしょう。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング