Excel VBA質問箱 IV

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

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


2439 / 13646 ツリー ←次へ | 前へ→

【68006】modeless kana 11/1/25(火) 10:21 質問[未読]
【68007】Re:modeless neptune 11/1/25(火) 10:45 回答[未読]
【68008】Re:modeless UO3 11/1/25(火) 10:46 回答[未読]
【68009】Re:modeless kana 11/1/25(火) 11:30 質問[未読]
【68012】Re:modeless UO3 11/1/25(火) 13:14 回答[未読]
【68013】Re:modeless kana 11/1/25(火) 13:55 お礼[未読]
【68014】Re:modeless neptune 11/1/25(火) 14:12 発言[未読]
【68018】Re:modeless kana 11/1/25(火) 15:19 質問[未読]
【68020】Re:modeless kana 11/1/25(火) 15:56 お礼[未読]

【68006】modeless
質問  kana  - 11/1/25(火) 10:21 -

引用なし
パスワード
   Modelessを使用してワークシートの操作をしようと以下のように記述しました
ここで問題なのは Wait時間を設定しましたが 本来ワークシートの操作が
終了したら 終了ボタンを押してから次の実行をしたいのです
(UserFormにある終了ボタン)
よろしくお願いします

  Workbooks(Ex_Name).Worksheets(ShName).Activate
  'モードレスでフォームを表示
  UserForm結果記入.Show vbModeless
  '1分wait
  waitDate = Now + TimeValue("00:01:00")
  Application.Wait (waitDate)
  'ユーザフォームをアンロード
  Unload UserForm結果記入

【68007】Re:modeless
回答  neptune  - 11/1/25(火) 10:45 -

引用なし
パスワード
   ▼kana さん:
>Modelessを使用してワークシートの操作をしようと以下のように記述しました
>ここで問題なのは Wait時間を設定しましたが 本来ワークシートの操作が
>終了したら 終了ボタンを押してから次の実行をしたいのです
>(UserFormにある終了ボタン)
>よろしくお願いします
>
>  Workbooks(Ex_Name).Worksheets(ShName).Activate
>  'モードレスでフォームを表示
>  UserForm結果記入.Show vbModeless
>  '1分wait
>  waitDate = Now + TimeValue("00:01:00")
>  Application.Wait (waitDate)
>  'ユーザフォームをアンロード
  UserFormにある終了ボタンのオブジェクト名=true

でやってみて下さい。

【68008】Re:modeless
回答  UO3  - 11/1/25(火) 10:46 -

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

おはようございます。
処理例です。

【標準モジュール】

Option Explicit

Sub Sample()
  'Workbooks(Ex_Name).Worksheets(ShName).Activate
  'モードレスでフォームを表示
  UserForm結果記入.Show vbModeless
End Sub

Sub 次の処理()
  '必要な処理コード
  MsgBox "次の処理稼動 確認メッセージ" '確認用
End Sub

【ユーザーフォームモジュール】

Option Explicit

Private Sub CommandButton1_Click()
  Call 次の処理
  Unload Me
End Sub

【68009】Re:modeless
質問  kana  - 11/1/25(火) 11:30 -

引用なし
パスワード
   ▼UO3 さん:
回答ありがとうございます
いまいち解らないのですが
以下のSampleですが
Modelessを実行後ワークシートの操作が出来ません
すぐ次を実行してしまいます
よろしくお願いいたします

>Option Explicit
>
>Sub Sample()
>  'Workbooks(Ex_Name).Worksheets(ShName).Activate
>  'モードレスでフォームを表示
>  UserForm結果記入.Show vbModeless
>End Sub
>
>Sub 次の処理()
>  '必要な処理コード
>  MsgBox "次の処理稼動 確認メッセージ" '確認用
>End Sub
>
>【ユーザーフォームモジュール】
>
>Option Explicit
>
>Private Sub CommandButton1_Click()
>  Call 次の処理
>  Unload Me
>End Sub

【68012】Re:modeless
回答  UO3  - 11/1/25(火) 13:14 -

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

>いまいち解らないのですが
>以下のSampleですが
>Modelessを実行後ワークシートの操作が出来ません
>すぐ次を実行してしまいます

はい。Modelessというのは、そういうものです。
つまり、フォームを表示して、すぐに戻ってきますので、仮に
その下にコードがあれば実行されます。ですから、通常はSampleで書きましたように

UserForm結果記入.Show vbModeless

の後は、 End Sub。
ここで、実行は、いったん終わるわけです。
で、あとはシート上の作業を行い、作業完了したらユーザーフォーム上のコマンドボタン
(SampleではComanndbutton1)を押すと、実際に処理したいロジックを走らせるという
構成です。(アップした例では 次の処理 というプロシジャ名にしています)
で、この処理が終わればユーザーフォームをUnloadします。

【68013】Re:modeless
お礼  kana  - 11/1/25(火) 13:55 -

引用なし
パスワード
   ▼UO3 さん:
有難うございました
Modelessで止まるものとばかり考えていました
よく理解できました

【68014】Re:modeless
発言  neptune  - 11/1/25(火) 14:12 -

引用なし
パスワード
   私のresはかなりピントがずれてましたね。

【68018】Re:modeless
質問  kana  - 11/1/25(火) 15:19 -

引用なし
パスワード
   ▼kana さん:
すいません理解できたと思って次のように記述しましたが駄目でした
Worksheets(ShName)で操作終了後
UserForm_A.Showを表示して次を実行しようと考え以下のようにしました
しかし Sub Sample実行後すぐにUserForm_A.Showが表示されてしまいました
よろしくお願いします
Sub Main()
    OpenBookCheck 
    Sample
End Sub
Sub Sample()
  Workbooks(Ex_Name).Worksheets(ShName).Activate
  'モードレスでフォームを表示
  UserForm結果記入.Show vbModeless  
End Sub

' ボタンはWorksheets(ShName)に配置した
sub ボタン()
  UserForm_A.Show
End Sub

【68020】Re:modeless
お礼  kana  - 11/1/25(火) 15:56 -

引用なし
パスワード
   ▼kana さん:
有難うございました
いろいろトライしましたところ
うまくいきました
お手数をおかけしました

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