Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4883 / 13644 ツリー ←次へ | 前へ→

【53761】ユーザーフォームを自動で開かせるには シャープ 08/2/6(水) 0:16 質問[未読]
【53762】Re:ユーザーフォームを自動で開かせるには ichinose 08/2/6(水) 7:20 発言[未読]
【53778】Re:ユーザーフォームを自動で開かせるには シャープ 08/2/6(水) 21:50 質問[未読]
【53780】Re:ユーザーフォームを自動で開かせるには ichinose 08/2/7(木) 6:45 発言[未読]
【53841】Re:ユーザーフォームを自動で開かせるには シャープ 08/2/8(金) 22:01 お礼[未読]

【53761】ユーザーフォームを自動で開かせるには
質問  シャープ  - 08/2/6(水) 0:16 -

引用なし
パスワード
   初めて質問させてもらいます、宜しくお願いします。

ブックを開くとユーザーフォームが自動的に開くのが中々できなくて
(シート切り替えるとできたが・・)worksheet_open()のUserform1.show
メソッドでそのブック自体からいきなり立ち上げると開くのは成功しました。

しかし、僕がしたいのは、ハイパーリンクからこのブックのページにとんでも
ユーザーフォームを開かせたいのです。これは不可能でしょうか?
何度やってみてもうまくいきません。ちなみに、そのハイパーリンクを貼ってある
ページにauto_open() userform1.show としたら、ページが切り替わるより早く
ユーザーフォームがでてきてしまい、失敗しました。。

これだけで3日ほど止まっています。わかりにくいかもしれませんが、なんとかしたいのです。お願いします。

【53762】Re:ユーザーフォームを自動で開かせるには
発言  ichinose  - 08/2/6(水) 7:20 -

引用なし
パスワード
   ▼シャープ さん:
おはようございます。

>初めて質問させてもらいます、宜しくお願いします。
>
>ブックを開くとユーザーフォームが自動的に開くのが中々できなくて
>(シート切り替えるとできたが・・)worksheet_open()のUserform1.show
>メソッドでそのブック自体からいきなり立ち上げると開くのは成功しました。
>
>しかし、僕がしたいのは、ハイパーリンクからこのブックのページにとんでも
>ユーザーフォームを開かせたいのです。これは不可能でしょうか?
>何度やってみてもうまくいきません。ちなみに、そのハイパーリンクを貼ってある
>ページにauto_open() userform1.show としたら、ページが切り替わるより早く
>ユーザーフォームがでてきてしまい、失敗しました。。
ブックが非表示になっているだけなんですけどねえ・・・。

方法としては、いくついか考えられますが・・・。


ハイパーリンクされるほうのブックの
Thisworkbookのモジュールに

Private Sub Workbook_Open()
  Application.OnTime Now(), "thisworkbook.form_show"
End Sub
Sub form_show()
  UserForm1.Show
End Sub

としておくと、ブックも表示されてフォームが開きますよ!!
(尚、この上記のコードは対象ブックが既に開いている場合は
 イベントが発生しません)

他には、ハイパーリンクしているブック側で

Workbook_SheetFollowHyperlink

というイベントで処理する方法も考えられますが、
ちょっとチェックが面倒かもしれません

検討してみてください。

【53778】Re:ユーザーフォームを自動で開かせるには
質問  シャープ  - 08/2/6(水) 21:50 -

引用なし
パスワード
   イチノセさん、ありがとうございます。
先に書いてあったコードをworkbookモジュールにコピペしたところ
僕が思っていたとおりの結果となりました。
大変感謝しております。

ただ、フォームが表示されている間はエクセルの操作ができなかったので、
一旦消してから操作するか、フォームのコントロールボタンをおすかして
動かすようにしています。

この現象は以前もあったので、その時はshowのあとに userform1.show false
と書いたら動いたのですが、今回同じようにしたら、エラーがでてだめでした。
できれば、フォームが表示された状態でもエクセル操作がしたいので、もう少し
質問を載せさせてもらいたいと思います。なかなか奥が深いです、。楽しいですけど ^^;

【53780】Re:ユーザーフォームを自動で開かせるには
発言  ichinose  - 08/2/7(木) 6:45 -

引用なし
パスワード
   ▼シャープ さん:
おはようございます。

>イチノセさん、ありがとうございます。
>先に書いてあったコードをworkbookモジュールにコピペしたところ
>僕が思っていたとおりの結果となりました。
>大変感謝しております。
>
>ただ、フォームが表示されている間はエクセルの操作ができなかったので、
>一旦消してから操作するか、フォームのコントロールボタンをおすかして
>動かすようにしています。
>
>この現象は以前もあったので、その時はshowのあとに userform1.show false
>と書いたら動いたのですが、今回同じようにしたら、エラーがでてだめでした。
>できれば、フォームが表示された状態でもエクセル操作がしたいので、もう少し
モーダレスモードですよね

Sub form_show()
  UserForm1.Show vbmodeless
End Sub

これで作動するはずですが・・・(falseでもOKでしたよ)。
バージョンがExcel2000以上であれば・・・。

再度確認してください。

【53841】Re:ユーザーフォームを自動で開かせるには
お礼  シャープ  - 08/2/8(金) 22:01 -

引用なし
パスワード
   ▼ichinose さん

この通りやったら、僕が望んでいたものができました。
感謝してます。ありがとうございました。^^)

4883 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free