Excel VBA質問箱 IV

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

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


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

【14197】進行状況の表示について miyake 04/5/23(日) 13:19 質問[未読]
【14206】Re:進行状況の表示について ちん 04/5/23(日) 17:39 回答[未読]
【14209】Re:進行状況の表示について ichinose 04/5/23(日) 18:50 発言[未読]

【14197】進行状況の表示について
質問  miyake  - 04/5/23(日) 13:19 -

引用なし
パスワード
   いつもお世話になっております。
進行状況を表示する方法、たとえば、終了ボタンを押すと、「ただいま終了中です」のようなメッセージをメッセージボックス等に表示させる方法を考えています。

下記は、フォーム(frmフォーム1)上にボタン(cmd終了)を割り付け、終了処理をするものです。
フォームのCaptionにはメッセージが表示されますが、メッセージボックス等により、メッセージを画面の前面に表示させたいのです。

Private Sub cmd終了_Click()

frmフォーム1.Caption = "終了しています。しばらくお待ちください。"
ThisWorkbook.Save
Application.Quit
ThisWorkbook.Close savechanges:=False
frmフォーム1.Caption = "トップページ"
Unload Me

End Sub
いい方法は、ありませんか。

【14206】Re:進行状況の表示について
回答  ちん  - 04/5/23(日) 17:39 -

引用なし
パスワード
   miyake さん こんばんは、ちんといいます。
Frameを使用してはどうでしょうか。
Frameの中に、ラベルをセットします。

通常は、FrameのVisibleは、Falseにする。
終了するときに、FrameのVisibleは、Trueにする。

Private Sub cmd終了_Click()

frmフォーム1.Frame1.Visible = True
frmフォーム1.Label1.Caption = "終了しています。しばらくお待ちください。" '


frmフォーム1.Caption = "終了しています。しばらくお待ちください。"
ThisWorkbook.Save
Application.Quit
ThisWorkbook.Close savechanges:=False
frmフォーム1.Caption = "トップページ"

frmフォーム1.Frame1.Visible = False

Unload Me

End Sub

以上、


▼miyake さん:
>いつもお世話になっております。
>進行状況を表示する方法、たとえば、終了ボタンを押すと、「ただいま終了中です」のようなメッセージをメッセージボックス等に表示させる方法を考えています。
>
>下記は、フォーム(frmフォーム1)上にボタン(cmd終了)を割り付け、終了処理をするものです。
>フォームのCaptionにはメッセージが表示されますが、メッセージボックス等により、メッセージを画面の前面に表示させたいのです。
>
>Private Sub cmd終了_Click()
>
>frmフォーム1.Caption = "終了しています。しばらくお待ちください。"
>ThisWorkbook.Save
>Application.Quit
>ThisWorkbook.Close savechanges:=False
>frmフォーム1.Caption = "トップページ"
>Unload Me
>
>End Sub
>いい方法は、ありませんか。

【14209】Re:進行状況の表示について
発言  ichinose  - 04/5/23(日) 18:50 -

引用なし
パスワード
   ▼miyake さん:
こんばんは。

>いつもお世話になっております。
>進行状況を表示する方法、たとえば、終了ボタンを押すと、「ただいま終了中です」のようなメッセージをメッセージボックス等に表示させる方法を考えています。
>
>下記は、フォーム(frmフォーム1)上にボタン(cmd終了)を割り付け、終了処理をするものです。
>フォームのCaptionにはメッセージが表示されますが、メッセージボックス等により、メッセージを画面の前面に表示させたいのです。

私は、こういう場合は、動的にラベルコントロールを貼り付けたり、
消したりしています。一例ですが、
'===========================================================
Private Sub CommandButton1_Click()
  Call disp_mes(True, UserForm1, "終了の処理中")
  DoEvents
  For i = 1 To 1000000
   j = j + 1
   Next
   
  Call disp_mes(False, UserForm1)

End Sub
'==========================================================
Sub disp_mes(dsp As Boolean, frm, Optional mes As String)
  Static lbl As msforms.Control
  If dsp = True Then
   Set lbl = frm.Controls.Add("Forms.Label.1", "end_mes", False)
   With lbl
     .Width = (Len(mes) + 1) * 24
     .Top = frm.Height / 3
     .Left = (frm.Width - .Width) / 2
     .Height = 34
     .SpecialEffect = fmSpecialEffectSunken
     .BackColor = &H80FFFF
     .TextAlign = fmTextAlignCenter
     .Font.Size = 24
     .Caption = mes
     .Visible = True
     End With
  Else
   If Not lbl Is Nothing Then
     frm.Controls.Remove lbl.Name
     Set lbl = Nothing
     End If
   End If
End Sub

複数のユーザーフォームで同様な処理をするときなんかは、
いいかもしれませんよ!!
試してみて下さい。

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