ホーム » ブログ

アーカイブ

検索


フィード


管理

2015年12月9日

MS-Excelで学会タイマーをつくってみた

いやー、「学会タイマー」って、ほんと、大学教員にとって重要なツールですよね。

学会や研究会などで時間管理が重要なのは当然ですが、学生さんに研究調査を発表してもらうようなゼミ型の講義だと、各学生さんの発表時間を厳格に管理しないと不公平ですし、モタモタしていると時限の終了時刻を過ぎてしまいかねないわけです。昔は終了時刻を過ぎてもよかったのかもしれませんが、いまの忙しい学生さんたちは、次の時限の講義に出席しないといけないかもしれませんし、何はともあれ、よくないわけです。

長年、学会タイマーを活用してきたのですが、実は、某フリーソフトウェアの学会タイマーが、自分のノートPC上で大問題を起こして以来、安心して使えない日々が続いてきました。というのも、某国際学会で自分が司会だったとき、そのフリーウェアーの学会タイマーを使ったものの、どうやら誤作動を起こしてしまい、実際の残り時間よりも大幅に短い残り時間を表示していた(かなり早いペースで残り時間が減っていった)ため、本当はみんな20分くらい発表時間があったのに、10分強で発表を強制終了させてしまっていたという悲惨なことがあったのです。誤作動というよりは、そのフリーウェアーのバグのような気もしますが・・・無料ソフトなわけですから、文句を言うわけにもいきません。使った自分が悪いのです。

で、困っていたのですが、結局、自作することにしました。下にソースコードを貼っておきます。アイディアは以前から頭のなかにあったので、制作自体は40分ほどで終わりました。MS-ExcelのVBAを用いています。残り時間の表示はExcel上で行います。なお、windowsのみで動作します。Macユーザーのみなさんごめんなさい。最初のDeclareの部分を改造すれば動くと思います。また、いろいろ改造の余地がありますので、ご自由にお試しください。あと、マクロ/Subの呼び出しは、エクセルの「フォーム」で「ボタン」をつくって、クリックで呼び出せるようにしておくと便利ですよ(ここまで読んでいる人ならそんな説明いらないと思いますが・・・)。

timer

【追記】エクセルのファイルもダウンロードできるようにしました。こちらからどうぞ。ただし、VBA/マクロが起動するためにはセキュリティレベルを下げる必要があるかもしれません。また、もちろん自分はウイルスなんて仕込みませんが、マクロが起動できる環境にするということは若干の脆弱性を意味しますので、そこは自己責任でよろしくおねがいします。

Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Declare Function GetAsyncKeyState Lib “User32.dll” (ByVal vKey As Long) As Long
Declare Function BeepAPI Lib “kernel32.dll” Alias “Beep” (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub updatetime()

‘–開始音–
Call BeepAPI(500, 400)
‘———————-
‘ Excel上では time という名前をつけたワークシートに残り時間の表示や設定値の入力を行います。
‘ (ワークシートの名前はなんでもかまいません)
‘ セルB2(Cells(2,2))に大きく残り時間を表示します
‘ 自分は400ptのArialが表示されるセルの幅・高さに設定していますが
‘ 利用するノートPCの画面解像度にあわせて適宜調整してください。
‘———————-

‘–表示色を黒色に戻す–
Cells(2, 2).Font.ColorIndex = 1

‘–念のためセルA10に開始時間を表示(代入)します
Sheets(“time”).Cells(10, 1) = Time()

‘–開始時間はStart_timeという変数に格納します
Start_time = Time()

‘———————-
‘ セルA7(Cells(7,1))に発表時間を分単位で記入しておきます
‘ セルA15(Cells(15,1))に、何分前に予鈴を鳴らすか記入しておきます
‘———————-

‘–終了時間はEnd_timeという変数に、DateAdd関数を用いて格納します
End_time = DateAdd(“n”, Sheets(“time”).Cells(7, 1), Start_time)
‘–予鈴を鳴らすタイミングの残り時間をBell1_timeという変数に格納します。
Bell1_time = Sheets(“time”).Cells(15, 1)

‘–念のためセルA12に終了時間を表示(代入)します
Sheets(“time”).Cells(12, 1) = End_time
‘–終了時間になるまでループを繰り返します
Do

‘–残り時間を秒数で計算して、分部分と秒部分に分離します
Remain_time = DateDiff(“s”, Time(), End_time)
Remain_min = Remain_time \ 60
Remain_sec = Remain_time Mod 60

‘–秒が1桁だと見栄えが悪いので1桁の場合は0を追記します
If Len(Remain_sec) = 1 Then Remain_sec = “0” & Remain_sec

‘–セルB2に残り時間を代入します
Sheets(“time”).Cells(2, 2) = Remain_min & “:” & Remain_sec

‘–予鈴を鳴らすタイミングの処理、音を鳴らし色を赤にします
If (Remain_min = Bell1_time) And (Remain_sec = “00”) Then
Call BeepAPI(500, 700)
Cells(2, 2).Font.ColorIndex = 3
End If

‘–無限ループするとCPUを消耗するので500ms待機させます(変更可)
Sleep 500

‘———————-
‘ Shiftキーが押されたらタイマーを止めます
‘ 発表が早く終わったときにはShiftを押しましょう
‘ 別のキーでもかまいませんので下の 16 を適切なASCIIコードに変更してください
‘———————-

If GetAsyncKeyState(16) <> 0 Then End

‘–現時点が終了時刻を越えるまでループします
Loop While End_time >= TimeValue(Time())

‘–終了の警告音を鳴らします
Call BeepAPI(350, 1200)

End Sub


カテゴリ: Computers,University of Tokyo — Masa @ 9:24 PM

 

2013年8月8日

東京大学オープンキャンパス

東京大学[高校生のためのオープンキャンパス]

これのおかげでキャンパス内は若い子で溢れております。今日のお昼の食堂は大混雑しそうだな・・・。

学部もある研究科はイベントなどできて文化祭のノリで愉しく企画してるんでしょうが、公共政策大学院は当然ですが高校生相手に勧誘することはないので、静かなものです。まぁお盆も近いので参加を強制させられるといろいろ文句が出てきそうな気もしますが。でも、すイエんサーみたいなノリで若い子相手にイベントやるの、たのしいんだろうなー・・・


カテゴリ: University of Tokyo — Masa @ 9:45 AM

 

2011年5月31日

MITから感謝状が来た

お世話になったMITのDUSP(都市計画学科)に数年に一度はgive back、すなわち寄附するようにしています。100~200ドル程度の少額ですが、RA/TAなどのフェローシップでメシ食わせてもらったことの恩返しと、学科のパーティなどでのケータリング代の足しにでもしていただければな・・・という気持ちで。MIT本部から毎年しつこく寄附を要求する手紙が届くので、根負けしてつい、というのもありますが。

で、そんな少額の寄附でも、きちんと感謝状は届きます。

単なるカードではなく、中を開くと・・・

学科主任の手書きのメッセージがきちんと書いてあります。今回は「日本の卒業生や仲間のことを気にかけていますし、みなさん無事であることを祈っています」とのこと。

こういう気遣いがあるからこそ、寄附をしよう、母校を支えよう、という気持ちになれます。私自身は見込み薄いでしょうが、これから機関投資家、発明家となる人たちは、卒業・修了して大きな利益をあげたときには、その利益を母校へとgive backするのでしょう。

これから日本の大学も、民間資金、寄附・基金などに頼る時代がくるのでしょうが、機械的にお金を集めたり、あるいは寄付者のPR支援など目先の利益を考えずに、卒業・修了生と「心が通った」fellowshipの構築を本気で考えていく必要があるのでしょう。

自分も大学の一員として、修了生に愛着を持ってもらえる大学院づくりへといくばくかの貢献をしていこう、と思った次第です。


カテゴリ: Massachusetts,University of Tokyo,Urban planning — Masa @ 8:54 PM