- PR -

エクセルVBAでのユーザーフォームが・・

1
投稿者投稿内容
てぃろ
常連さん
会議室デビュー日: 2007/07/01
投稿数: 23
投稿日時: 2008-01-26 17:54
いつも参考にしております。

エクセルVBAで分からないことがあるので、
ご存知の方がおられましたら、お知恵をお貸し下さい。

試したExcelのバージョンは 2002,2003です。

エクセルVBAで作ったユーザーフォームは
シートの後ろに隠すことはできないのでしょうか?
そのワークブックの後ろには隠せないのはまだ分かりますが、
別のワークブックを開いた場合でも必ず最前面に表示されてしまいます。

 1、新しいエクセルを起動して、VisualBasicEditor を起動する
 2、ユーザーフォーム(UserForm1)を挿入する
 3、ThisWorkbookに下記のコードを記述して保存して終了

     Private Sub Workbook_Open()
      UserForm1.Show vbModaless
     End Sub

 4、今保存したエクセルファイルを起動するとモーダレスフォームが現れます。
 5、別のエクセルファイルを開く。(新規作成でもOK)

ここで5でに開いたエクセルよりユーザーフォームが手前に表示されてしまいます。
なんとかして、別の絵腐るファイルを開いた時は、フォームを後ろに隠せないでしょうか?

宜しくお願いします。
てぃろ
常連さん
会議室デビュー日: 2007/07/01
投稿数: 23
投稿日時: 2008-01-28 01:30
すみません、自己レスです。
いろいろ調べて見ましたがなかなか実現できません。

代案作を考えてみました。
「他のエクセルファイルを同時にこのタスクに起動しない」
というものです。

具体的には3を起動している間は他のエクセルファイル(hoge.xls)を開いた場合
別のエクセルを起動し、そちらでhoge.xlsファイルを開き、
また逆に、hoge.xlsを開いている時に、3のエクセルを起動した場合、通常はhoge.xlsとおなじエクセルのタスクに起動するものを、
別のエクセルを起動し、そちらでファイルを開くという制御です。

この方法は実現できるのでしょうか・・・?
試行錯誤しているのですがなかなか出来ません。
宜しくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-28 09:41
引用:

てぃろさんの書き込み (2008-01-26 17:54) より:

5、別のエクセルファイルを開く。(新規作成でもOK)

ここで5でに開いたエクセルよりユーザーフォームが手前に表示されてしまいます。


5 の Workbook 自体 Open できないと思うのですが、本当に 5 の Workbook は Open できていますか?

それはさておき、Workbook_Open イベントで Application.IgnoreRemoteRequests = True にしておけば別プロセスで起動できると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
てぃろ
常連さん
会議室デビュー日: 2007/07/01
投稿数: 23
投稿日時: 2008-01-28 14:50
じゃんぬねっと様、返信ありがとうございます。


 引用:-----------------------------------------------------------------------------


  じゃんぬねっとさんの書き込み (2008-01-28 09:41) より:

  5 の Workbook 自体 Open できないと思うのですが、本当に 5 の Workbook は Open できていますか?


--------------------------------------------------------------------------------
とのご質問ですが、間違いなく同一エクセル内で二つのワークブックが表示されています。 ユーザーフォームをvbModalessでShowしないとできませんが。
そして、二つのワークブックより前面にユーザーフォームが表示されている状態です。

上部のメニューからウインドウを選択すると二つのエクセルファイルがあることも確認できました。


Application.IgnoreRemoteRequests ですね。調べてから確認してみます。
本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)