過去ログ

                                Page     133
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼モードレスフォームを表示している時に、ア...  てと 02/9/25(水) 9:25
   ┗Re:モードレスフォームを表示している時に、ア...  ichinose 02/9/25(水) 10:08
      ┗結果は同じでした。  てと 02/9/25(水) 18:23
         ┗excel2000では・・・  ichinose 02/9/25(水) 18:54
            ┗実はXPなんです。  てと 02/9/26(木) 8:58
               ┗うちもXPなんですが・・・  つん 02/9/26(木) 9:47
                  ┗Re:うちもXPなんですが・・・  ichinose 02/9/26(木) 10:14
                     ┣Re:うちもXPなんですが・・・  てと 02/9/26(木) 11:49
                     ┗試してみました。  てと 02/9/26(木) 18:13
                        ┗Re:試してみました。  ichinose 02/9/26(木) 21:45
                           ┣挿入個所が間違っていたことに気づきました  てと 02/9/27(金) 6:35
                           ┗解決しました!  てと 02/9/27(金) 9:54

 ───────────────────────────────────────
 ■題名 : モードレスフォームを表示している時に、ア...
 ■名前 : てと <teto_p@h9.dion.ne.jp>
 ■日付 : 02/9/25(水) 9:25
 -------------------------------------------------------------------------
   表題だけでは何だか分からないと思いますので、以下にやっていることを説明します。

1.BOOKに複数のシートが有り、シート1に明細データが蓄積されています。
2.シート2〜先は、明細データからフィルタで抜き出した項目別の明細データと、そのデータを基にして作成したピボットテーブルでの集計表が横方向にいくつか並んでいます。
3.BOOKを開くといくつかの処理をさせるために作ったユーザーフォームがモードレスで表示されます。
4.ユーザーフォームの「集計処理」ボタンをクリックすると、上記2.で説明したデータが作成されます。
 (1)なお、「集計処理」はシート(n)に対して項目nの処理だけ行います。
 (2)「集計処理」実行中は画面が動かないようにScreenUpdateはfalseにしていて、集計が終了した時点でTrueに切り替えた後にシート(n)をSelectして、結果を表示するようにしてあります。
 (3)結果を表示する直前で「ウィンドウ枠の固定」をして、左側の明細データを見ながらピボットテーブルの集計結果を見られるようにしてあります。


ここで、問題なのが、最初に表示させておいたユーザーフォームはモードレスで表示されたままにしてあるのですが、これはそのままの状態で集計結果シート上のアクティブセルを矢印キーで動かしたい。
しかし、一旦シート上で任意のセルをクリックしないと矢印キーが効かず、と言うかユーザーフォーム上のボタンの選択が変化するという動きです。

「任意のセルをクリック」しなくても直ぐにアクティブセルを矢印キーで移動できるようにしたいのですが、どのようにしたらこれを実現できるでしょうか?

説明がちょっと長くなりましたが、宜しくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:モードレスフォームを表示している時に、ア...  ■名前 : ichinose  ■日付 : 02/9/25(水) 10:08  -------------------------------------------------------------------------
   ▼てと さん:
こんにちは。
>表題だけでは何だか分からないと思いますので、以下にやっていることを説明します。
>
>1.BOOKに複数のシートが有り、シート1に明細データが蓄積されています。
>2.シート2〜先は、明細データからフィルタで抜き出した項目別の明細データと、そのデータを基にして作成したピボットテーブルでの集計表が横方向にいくつか並んでいます。
>3.BOOKを開くといくつかの処理をさせるために作ったユーザーフォームがモードレスで表示されます。
>4.ユーザーフォームの「集計処理」ボタンをクリックすると、上記2.で説明したデータが作成されます。
> (1)なお、「集計処理」はシート(n)に対して項目nの処理だけ行います。
> (2)「集計処理」実行中は画面が動かないようにScreenUpdateはfalseにしていて、集計が終了した時点でTrueに切り替えた後にシート(n)をSelectして、結果を表示するようにしてあります。
> (3)結果を表示する直前で「ウィンドウ枠の固定」をして、左側の明細データを見ながらピボットテーブルの集計結果を見られるようにしてあります。
>
>
>ここで、問題なのが、最初に表示させておいたユーザーフォームはモードレスで表示されたままにしてあるのですが、これはそのままの状態で集計結果シート上のアクティブセルを矢印キーで動かしたい。
>しかし、一旦シート上で任意のセルをクリックしないと矢印キーが効かず、と言うかユーザーフォーム上のボタンの選択が変化するという動きです。
>
>「任意のセルをクリック」しなくても直ぐにアクティブセルを矢印キーで移動できるようにしたいのですが、どのようにしたらこれを実現できるでしょうか?
>
>説明がちょっと長くなりましたが、宜しくお願いいたします。
ボタンクリックでの例で・・・。
'============================================
Private Sub CommandButton1_Click()
  '何かの処理
  worksheets(1).Activate '例えばですが、
  Application.Visible = True
End Sub

でどうでしょうか?
 ───────────────────────────────────────  ■題名 : 結果は同じでした。  ■名前 : てと <teto_p@h9.dion.ne.jp>  ■日付 : 02/9/25(水) 18:23  -------------------------------------------------------------------------
   ▼ichinose さん:
>ボタンクリックでの例で・・・。
>'============================================
>Private Sub CommandButton1_Click()
>  '何かの処理
>  worksheets(1).Activate '例えばですが、
>  Application.Visible = True
>End Sub
>
>でどうでしょうか?

Application.Visible = True を追加してみましたが
結果は同じでした。

他に手立てはないものでしょうか。。。
 ───────────────────────────────────────  ■題名 : excel2000では・・・  ■名前 : ichinose  ■日付 : 02/9/25(水) 18:54  -------------------------------------------------------------------------
   ▼てと さん:
>▼ichinose さん:
>>ボタンクリックでの例で・・・。
>>'============================================
>>Private Sub CommandButton1_Click()
>>  '何かの処理
>>  worksheets(1).Activate '例えばですが、
>>  Application.Visible = True
>>End Sub
>>
>>でどうでしょうか?
Ex2000では、これで動いていますが、バージョン違いますか?
XPですか?もしそうだとしたら、まだインストールしてません。
ごめんなさい。
 ───────────────────────────────────────  ■題名 : 実はXPなんです。  ■名前 : てと <teto_p@h9.dion.ne.jp>  ■日付 : 02/9/26(木) 8:58  -------------------------------------------------------------------------
   ▼ichinose さん:
>▼てと さん:
>>▼ichinose さん:
>>>ボタンクリックでの例で・・・。
>>>'============================================
>>>Private Sub CommandButton1_Click()
>>>  '何かの処理
>>>  worksheets(1).Activate '例えばですが、
>>>  Application.Visible = True
>>>End Sub
>>>
>>>でどうでしょうか?
>Ex2000では、これで動いていますが、バージョン違いますか?
>XPですか?もしそうだとしたら、まだインストールしてません。
>ごめんなさい。

実はXPなんです。最初に書いておけばよかったですね。
2000からXPでけっこう変わったところがあるのでしょうか?

別の質問になってしまいますが、会社は未だにOffice97でして、これをバージョンアップして行きたいのですが、どのレベルに上げたらいいのでしょう。
あまりにも最新バージョンから遅れているので、世間から見放されている?かのように思ってしまいます。
VBAを使ってごりごりやってる人は何人もいませんが、普通の使い方だけでも互換性を気にしなければならないとなると、重たい仕事になりますね。
一応、XPを導入したPCを1台用意して移行問題を潰していくつもりですが、(最初の質問はそのPCで作っていて発生した問題です)この話が分かるのが私だけなので、ストレスにならないように早めに対応しているつもりです。
 ───────────────────────────────────────  ■題名 : うちもXPなんですが・・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/26(木) 9:47  -------------------------------------------------------------------------
   てとさん、ichinoseさん、おはようございます。

回答ではなくて申し訳ないんですが、

>実はXPなんです。最初に書いておけばよかったですね。
>2000からXPでけっこう変わったところがあるのでしょうか?

うちもXPで、ちょっくら試してみたのですが、
こちらでは上手く動作しました。
フォームの上に、コマンドボタンだけ配置して、ichinoseさんのコードを書いただけでテストしただけなんですけど・・・

バージョンの問題ではないようですね?
 ───────────────────────────────────────  ■題名 : Re:うちもXPなんですが・・・  ■名前 : ichinose  ■日付 : 02/9/26(木) 10:14  -------------------------------------------------------------------------
   ▼つん さん:
てとさん
こんにちは。
>うちもXPで、ちょっくら試してみたのですが、
>こちらでは上手く動作しました。
>フォームの上に、コマンドボタンだけ配置して、ichinoseさんのコードを書いただけでテストしただけなんですけど・・・
つんさん、ありがとうございます。
私もXPは購入はしてあるんですが、インストールしてないもので・・。
てとさん、私が記述したような単純なコードでのテストでも駄目なんですか?
試してみて下さい。
 ───────────────────────────────────────  ■題名 : Re:うちもXPなんですが・・・  ■名前 : てと <teto_p@h9.dion.ne.jp>  ■日付 : 02/9/26(木) 11:49  -------------------------------------------------------------------------
   ▼ichinose さん:

>てとさん、私が記述したような単純なコードでのテストでも駄目なんですか?
>試してみて下さい。

問題になっているプログラムにコードを追加して駄目でした。
教えていただいたテストは試していませんので、これからやってみます。
 ───────────────────────────────────────  ■題名 : 試してみました。  ■名前 : てと <teto_p@h9.dion.ne.jp>  ■日付 : 02/9/26(木) 18:13  -------------------------------------------------------------------------
   あの例示ですと、問題は発生しないことが確認できました。

私の作ったロジックですと、ボタンクリックで別のユーザーフォームを表示して、明細データを選択するためのパラメータデータ(期間や他の情報)を入力します。
その後に集計処理の本体が標準モジュールの中で処理され、結果が求まるという流れです。
このような場合は、何か別の対応が必要となるのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:試してみました。  ■名前 : ichinose  ■日付 : 02/9/26(木) 21:45  -------------------------------------------------------------------------
   ▼てと さん:
こんばんは。
>あの例示ですと、問題は発生しないことが確認できました。
そうですか。では、Application.Visible=Trueを記述するタイミングの問題ですね。

>私の作ったロジックですと、ボタンクリックで別のユーザーフォームを表示して、明細データを選択するためのパラメータデータ(期間や他の情報)を入力します。
この別のフォームもモーダレス表示なんですか?
この別のフォームがモーダルモードなら、
'=================================
Private Sub CommandButton1_Click()
  UserForm2.Show
  Me.Repaint
  Worksheets(1).Activate
  Application.Visible = True
End Sub
でOKでした。
モーダレスモードの場合、
最初に表示しているフォームのモジュールで
'===================================
Private Sub CommandButton1_Click()
  UserForm2.Show vbModeless
End Sub
'====================================
Sub act_sht()
  Me.Repaint
  Worksheets(1).Activate
  Application.Visible = True
End Sub
このフォームから表示している別のフォームモジュールで例えばボタンが押された場合で、
'==========================================
Private Sub CommandButton1_Click()
  '集計処理
  Me.Hide
  UserForm1.act_sht
  Unload Me
End Sub

こんな記述では、目的どおり動作をします。
Application.Visible=Trueを出すタイミングを工夫してみては?
 ───────────────────────────────────────  ■題名 : 挿入個所が間違っていたことに気づきました  ■名前 : てと <teto_p@h9.dion.ne.jp>  ■日付 : 02/9/27(金) 6:35  -------------------------------------------------------------------------
   ▼ichinose さん:
>▼てと さん:
>こんばんは。
>>あの例示ですと、問題は発生しないことが確認できました。
>そうですか。では、Application.Visible=Trueを記述するタイミングの問題ですね。
>
>>私の作ったロジックですと、ボタンクリックで別のユーザーフォームを表示して、明細データを選択するためのパラメータデータ(期間や他の情報)を入力します。
>この別のフォームもモーダレス表示なんですか?
>この別のフォームがモーダルモードなら、
>'=================================
>Private Sub CommandButton1_Click()
>  UserForm2.Show
>  Me.Repaint
>  Worksheets(1).Activate
>  Application.Visible = True
>End Sub
>でOKでした。
>モーダレスモードの場合、
>最初に表示しているフォームのモジュールで
>'===================================
>Private Sub CommandButton1_Click()
>  UserForm2.Show vbModeless
>End Sub
>'====================================
>Sub act_sht()
>  Me.Repaint
>  Worksheets(1).Activate
>  Application.Visible = True
>End Sub
>このフォームから表示している別のフォームモジュールで例えばボタンが押された場合で、
>'==========================================
>Private Sub CommandButton1_Click()
>  '集計処理
>  Me.Hide
>  UserForm1.act_sht
>  Unload Me
>End Sub
>
>こんな記述では、目的どおり動作をします。
>Application.Visible=Trueを出すタイミングを工夫してみては?

最初にApplication.Visible=Trueを教えていただいた時の挿入個所を間違っていたと思います。
標準モジュールの最後に挿入していました。これでは駄目なんですよね。
上記の方法を教えていただいて「あっ!?」と思った次第です。
それから、パラメータデータを入力するフォームはモーダルモードです。

出社したら早速試してみます。たぶん、今度はうまくいくと思います。
結果が楽しみです!
 ───────────────────────────────────────  ■題名 : 解決しました!  ■名前 : てと <teto_p@h9.dion.ne.jp>  ■日付 : 02/9/27(金) 9:54  -------------------------------------------------------------------------
   Application.Visible = True を書いたところが標準モジュールだったのが原因でうまくいかなかったのを確認しました。
モーダレスモードのユーザーフォームからモーダルモードのユーザーフォームを呼び出した後ろに Application.Visible = True を入れたところ、抱えていた問題が解決しました。
ほんの少しの勘違いでうまく行かず、ご迷惑をおかけして申し訳有りませんでした。
お世話になりました。
感謝です!

P.S.
今朝の通勤途中で、ボランティアセンターで働いている友人にメールしました。
「ネット上で助けてもらっています。こういう影武者が世の中にたくさんいます。」と。。。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 133