[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームの使用について』(Mikaちゃん)
商品の1日の在庫管理をマクロで実行しています。
大体毎日400程度の計算を実行し、計算のマクロ実行時には
ユーザーフォームで、「現在集計中。しばらくお待ちください。」と
表示しています。
先日パートの方が、マクロ実行中に×ボタンを押して計算が中断する事が
あったので、
ユーザーフォームに以下のコードを入力し×ボタンを無効にしました。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub
在庫計算マクロの最後に
Unload UserForm1
で、ユーザーフォームを閉じるようにしていたのですが、閉じなくなりました。
そこで良い方法があれば教えて下さい。
ユーザーフォームの×ボタンを有効にしつつ、在庫計算マクロ終了後にユーザーフォームが消えるようにしたいと思っています。
よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
> Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
上記のCancelの他にもう一つあるCloseModeというのを調べてみてください。
ユーザーが画面から閉じる操作をしたのか、
VBAのコードから閉じる操作をしたのか、
判定できます。
(ご近所PG) 2018/02/05(月) 14:56
調べてみたところ、ご呈示のコードは「×ボタンが押された場合」にキャンセルするコードではなく、「何らかの原因」で閉じようとされたら、キャンセルするコードになっているようです。
<参考>
http://officetanaka.net/excel/vba/tips/tips18.htm
なので、以下のように修正すれば、×ボタンだけ無効にできると思われます。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True End If End Sub
(もこな2) 2018/02/05(月) 15:02
ご回答ありがとうございます。
早速改善が図れました♪
本当にありがとうございました!
(Mikaちゃん) 2018/02/05(月) 15:05
QueryClose イベント
https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/queryclose-event
closemode 引数は、次の値を返します。 定数 値 説明 vbFormControlMenu 0 ユーザーが UserForm 上の コントロール メニューで [ 閉じる ] コマンドを選択しました。 vbFormCode 1 コードから Unload ステートメントが呼び出されました。 vbAppWindows 2 現在の Windows オペレーティング環境セッションが終了しようとしています。 vbAppTaskManager 3 Windows の タスク マネージャー がアプリケーションを閉じます。
(ご近所PG) 2018/02/05(月) 15:11
ご丁寧にありがとうございます。
とても参考になりました♪
(Mikaちゃん) 2018/02/05(月) 15:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.