Excel-VBAタイマー機能~数秒後に表示させる方法

パソコン難しい Excel-VBA
スポンサーリンク

こんにちは、とりっぷぼうるです。

元々エクセルとは全く縁のない生活をしていましたが、人員不足などで少しでもデータ入力作業や集計作業を効率化するしか方法が無く、仕方がなくエクセルに取り組み始まました。

なぜならば、大きな会社ならば専用ソフトやクラウド上でデータ集計や管理を行うのでしょうけど、小さなところではそのようなお金もないのでエクセルで解決するしか方法が無いのですよね。

このような理由からエクセルに取り組み始めましたので、当然ながらエクセルの専門知識もなく、学校に通うこともできずにただ単にエクセルの書籍とにらめっこしながら取り組んでいます。

波乗りアヒル
波乗りアヒル

でも書籍のままだと実用的でないことが多く、VBAコードを組み合わせてみたら動いた!という実用例・体験談を書いています。

Excel-VBAの専門学校通学や・資格があるわけではありませんので、あくまでエラーにならずに動いてくれているVBAコードになりますので、掲載のVBAコードが同じように動く保証はできません。
実際に動いているエクセルは2009と2016です。

15秒後に自動的にユーザーフォームを自動表示

ボウリングのリーグ戦での成績表でも必ず使うユーザーフォーム。

これがあるとボタンひとつで繰り返し作業を自動で行ってくれるので、あっという間にリーグ成績表が出来上がってくれます。

「ボウリング成績表印刷設定方法~LTB個人リーグ編」でも使用していますが、ここに個人成績一覧表があります。

ボウリング成績表印刷設定方法~LTB個人リーグ編
エクセルで作成しているボウリングリーグ成績表を自動化で、リーグ戦参加者の成績表を作成・印刷専用フォームの使い方

基本的には成績表示・順位並べ替え・ハイゲームなどの個人トップが自動的に集計されて表示されるようになっているので、セルに直接入力することがありません。

波乗りアヒル
波乗りアヒル

間違えってホントに無いのかな?

不安ならば数秒間だけ見られるようにすればいいわよ

波乗りアヒル
波乗りアヒル

ユーザーフォームを一旦閉じるて、ボタンを配置して押してもらうって事?

タイマー設定して数秒後に自動的にフォームを自動表示するのよ!

波乗りアヒル
波乗りアヒル

エクセルのタイマー機能なんてあるんですね

TimeValueを使えば、エクセルファイル開いた時に自動的にユーザーフォーム表示も可能になるわよ!

TimeValueを使おう

timevalue

実際に使っているのは印刷関連です。

印刷フォームについては、ほかのページですでに話しているので省略します。

Excel-VBA「✖」ボタンを使ってユーザーフォームを閉じられないようにする
ユーザーフォームの右上にある✖ボタン。通常押せばユーザーフォームを閉じられますが、プログラムの関係上使われては困ることありませんか?そんな時は使えなくしてしまえばいいのです。
まず始めに標準モジュールExcel-VBAコードを準備します

これは、タイマーが作動した時に何をするかって事です。

ここでは、タイマー作動時に元々見ていた「ボウリングリーグ戦個人成績一覧表」があるシートを再度表示して、印刷メニュー(ユーザーフォーム8)を表示させます。

Sub PREVIEWTIME()
Worksheets(“RESULT”).Activate
UserForm8.Show
End Sub
  1. PREVIEWTIMEという名前をつけてマクロ開始する
  2. シート名「RESULT」を選ぶ
  3. ユーザーフォーム8を表示する
  4. マクロ終了

ここではPREVIEWTIMEと名前をつけましたが、何でもいいですよ、分かればね。

次にタイマーを設定しましょう

実際にタイマーを作動させるユーザーフォーム8のコマンドボタンにTimeValueを使って時間を設定します。

印刷メニュー

ここでは、【CLOSE】ボタンを押すと15秒間だけ、ユーザーフォームが消えてボウリングリーグ戦の成績一覧が見られるようにします。

15秒後に「標準モジュール」に書いた「PREVIEWTIME」が作動するってことです。

Private Sub CommandButton5_Click()
Unload UserForm8
MsgBox “15秒後に自動復帰します”
Application.OnTime Now + TimeValue(“00:00:15”), “PREVIEWTIME”
End Sub
  1. コマンドボタン5を押したら
  2. ユーザーフォーム8を閉じる
  3. メッセージで「15秒後に自動復帰します」を表示する
  4. タイマー作動は今から15秒後にPREVIEWTIMEを作動させる
  5. マクロ記録終了

OnTime Now(今)+(00:00:15)で15秒ってことですね。

PREVIEWTIMEの名前と内容を変える

標準モジュールにPREVIEWTIME以外に様々な内容を作っておけば、タイマー作動で自動保存したり、意図しない操作でユーザーフォームが閉じられてしまった時も自動復帰で安心ですね。

✖ボタンについては話したはずですよ!

波乗りアヒル
波乗りアヒル

そうでしたね。忘れていました。

Excel-VBA「✖」ボタンを使ってユーザーフォームを閉じられないようにする
ユーザーフォームの右上にある✖ボタン。通常押せばユーザーフォームを閉じられますが、プログラムの関係上使われては困ることありませんか?そんな時は使えなくしてしまえばいいのです。

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

コメント