0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel VBAで「ユーザーを採点するExcel」を作ったら、Excelが完全に監視者になった

Posted at

はじめに

Excelを使っていると、

同じセルを何度も見ている

操作の途中で止まって考えている

実はF5をほとんど使っていない

……といった「操作の癖」が必ず出ます。

あるとき思いました。

これ、全部Excel側で分かってるよな?

なら逆に、
Excelを「使われる側」ではなく「評価する側」に回したらどうなるのか。
それを Excel VBA で本気で作ってみました。

作ったもの

Excelがユーザーの操作を採点するシステムです。

評価対象はデータではありません。
操作そのものです。

Excelは裏で、次のような情報を記録しています。

選択変更の回数

操作間隔(平均・最大)

無操作で止まっていた時間(=迷い)

同じセルを何度も選んだ回数

F5(ジャンプ)を使ったかどうか

作業を終えると、Excelはこう言います。

評価:62点
・操作に迷いが見られます
・同じセルを何度も確認しています
・F5を使わないのは減点です

saitenn.png

完全に嫌な上司です。

実装の考え方

① すべての操作を拾う入口は SelectionChange

マウス操作でも、
キーボード移動でも、
必ず通るのが Worksheet_SelectionChange です。

ここを入口にすると、
ユーザー操作を偏りなく取得できます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    modUserJudge.Judge_OnSelectionChange Me, Target
End Sub

このイベントだけで、

操作回数

操作間隔

同一セルの連打

をすべて集計できます。

② 「迷い」は無操作時間で定義する

迷いの定義は、かなり単純です。

Dim gap As Double
gap = DateDiff("s", gLastActionTime, Now)

If gap >= 8 Then
    gHesitationCount = gHesitationCount + 1
End If

前回操作から一定秒数以上空いたら、
「判断に迷っていた」とみなす。

雑ですが、
実際に使うと驚くほど人間の感覚に合います。

③ ログは「見えないシート」に保存する

操作ログとランキングは、
VeryHidden シートに保存しています。

ws.Visible = xlSheetVeryHidden

ポイントはここです。

シートは 存在する

でも Excel の「再表示」には出てこない

そのため、

「_JudgeLog というシートが無いのに
その名前に変更しようとすると
『存在してます』と言われる」

という、地味に怖い挙動になります。

Excelは正しいです。
見えないだけで、ちゃんと存在しています。

④ F5を監視する(性格が悪い)

ジャンプ(F5)を使うかどうかも、
操作スタイルの差が出ます。

Application.OnKey "{F5}", "Judge_OnF5"

使わない → 減点

使う → 加点

完全に余計なお世話ですが、
評価者としては一応見ています。

ランキング機能(自分との戦い)

スコアは毎回保存し、

過去最高

前回との差

操作回数・迷い回数

を比較できるようにしました。

Excelにこう言われます。

前回よりスコアが下がっています。

地味に効きます。

なぜ MsgBox を使っていないのか

作業中に煽りたかったのですが、
MsgBox は 自動で消せません。

そのため、

UserForm

数秒表示

OnTime で自動消去

という構成にしています。

突然出て、勝手に消える。

「今の操作、迷ってますよね?」

完全に性格が悪いです。

業務効率は上がるのか?

1ミリも上がりません。

ただ、

自分の操作癖が数値で見える

無意識の迷いが可視化される

Excelとの主従関係が逆転する

という、
技術者的にはかなり面白い体験になります。

まとめ

Excelは簡単に人を評価できる

ログは想像以上に取れる

「見えないけど存在する」仕組みは普通に怖い

Excelを
便利な道具ではなく
観測者・評価者として扱うと、
VBAの遊び方が一段変わります。

おわりに

実用性はありません。
でも、こういう
役に立たない本気を作るのが楽しくて、
VBAを触っています。

▼こんなのも作ってるので読んで行ってもらえるとうれしいです
Excel VBAで進捗バーを実装する方法

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?