【Excelのタイパな話】 「タイピング筋」を鍛えて周りと差がつくタイパを実現しよう※タイピングゲームのコード付き
この記事を読んでもらいたい人はこんな方です
ExcelのVBAに興味がある方
タイピングが好きな方
タイピングはとっても大事なPCスキル
こんにちは!私は(株)SHIFTで社内教育を中心とする業務を担当している根岸紳(ねぎし しん)と申します。
私は主に受入教育、つまり新卒や中途、さらにはIT業界未経験の受講生を対象に幅広いITスキルを教育しています。
そんな私から今日はタイピングの重要性について語りたいと思っています。
そのタイピングスキル、まだまだ磨けます!
弊社(株)SHIFTでは入社の条件にタイピングがあるほどタイピングのスキルを重視しています。なぜタイピングのスキルが重要かというと、従業員の生産性にかかわってくるからです。
この記事を読んでいるそこのあなたもe-typing や寿司打 などのタイピング力を測れるサービスを試してみたことがあるかもしれません。
私の実体験としては、はじめおもしろいと思って特訓していてもいつの間にかタイピングの特訓をやめてしまいます。なぜならある程度業務に困らないほどにはタイピングできているからです。
しかしたまにe-typing に再度挑戦してみると思わぬところで躓いて先に進めなくなるようなことが起こります。それはいったいなぜなのでしょう?
私たちの脳は常に退化する危険性がある!なぜなら
私たちの脳は常に退化してしまうリスクに晒されています。なぜかというとお気づきだと思いますが主にモバイル端末のせいです。
今の若者はマイクからの音声入力を駆使してテキストチャットをしているという記事も読んだことがあるくらい、スマホやタブレットの影響でキーボード入力を忘れてしまった、もしくはキーボード入力さえストレスに感じてしまう人が若者を中心に増えています。
確かに私たちはタッチパネルのモバイル端末のおかげでどこに行っても高速なデータ通信でSNSを通じて質の高い大量のコンテンツを視聴することができます。
さらに、身近なアプリのほとんどが昔はPC前提だったものがモバイル端末に対応するようになり、PCを使わなくても仕事ができてしまう方だっています。
そういった昨今の事情から、タイピングの重要性に今一度気づいてもらいたいのです。
Excel操作しながらタイピング力も鍛えられる
今回紹介するのはVBAのタイピングのゲームになります。これは1分間でいくつの単語をタイピングできたかを測ることができるゲームです。
英単語でタイピングできるようになっています。
なぜなら、英単語はタイピングのミスが発生しやすく、たとえばプログラミングのコーディングではタイプミスが発生すると、プログラムそのものがエラーになってしまうからです。
一般的なタイピングのゲームと違い自分の好きな単語で練習できる!
よく使われるタイピングのゲームは、決められた単語を使ってタイピングするしかありませんでしたが、このExcelを使ったタイピングのゲームはファイルを読み込むことで、好きな単語を登録して練習することができます。
早速Excelでタイピング力を測ってみよう!
こちらのVBAのコードを貼り付けて実行すればすぐにタイピングのゲームを楽しむことができます。制限時間は1分、あなたのスコアはどれくらいでしょうか?
Option Explicit
Private words() As String
Sub TypingGame()
Dim word As String
Dim newWord As String
Dim userInput As String
Dim score As Integer
Dim timeLimit As Integer
Dim startTime As Double
Dim ws As Worksheet
Dim historyRow As Integer
Dim wordStartTime As Double
Dim timeTaken As Double
' 単語リストの読み込み
If Not LoadWordsFromFile() Then
MsgBox "単語リストの読み込みに失敗しました。ゲームを終了します。", vbCritical
Exit Sub
End If
Set ws = ThisWorkbook.Sheets("Sheet1")
score = 0
timeLimit = 60 ' ゲーム時間を60秒に設定
historyRow = 6 ' 履歴の開始行
' 表示セルの設定
ws.Range("A1").Value = "入力する単語:"
ws.Range("B1").Value = ""
ws.Range("A2").Value = "スコア:"
ws.Range("B2").Value = score
ws.Range("A3").Value = "残り時間:"
' 履歴のヘッダー
ws.Range("A5").Value = "履歴:"
ws.Range("A6").Value = "単語"
ws.Range("B6").Value = "入力"
ws.Range("C6").Value = "結果"
ws.Range("D6").Value = "時間(秒)"
startTime = Timer
word = GetRandomWord()
ws.Range("B1").Value = word
Do While Timer - startTime < timeLimit
' 残り時間の更新
ws.Range("B3").Value = Round(timeLimit - (Timer - startTime), 0) & " 秒"
wordStartTime = Timer
userInput = InputBox("セルB1に表示されている単語を入力してください:", "タイピングゲーム")
timeTaken = Timer - wordStartTime
' 履歴の追加
historyRow = historyRow + 1
ws.Cells(historyRow, 1).Value = word
ws.Cells(historyRow, 2).Value = userInput
ws.Cells(historyRow, 4).Value = Round(timeTaken, 2)
If userInput = "" Then
' ユーザーがキャンセルした場合、ゲームを終了
ws.Cells(historyRow, 3).Value = "キャンセル"
Exit Do
ElseIf userInput = word Then
score = score + 1
ws.Range("B2").Value = score
ws.Cells(historyRow, 3).Value = "正解"
MsgBox "正解! スコア: " & score
' 現在の単語と異なる新しい単語を取得
Do
newWord = GetRandomWord()
Loop While newWord = word
word = newWord
ws.Range("B1").Value = word
Else
ws.Cells(historyRow, 3).Value = "不正解"
MsgBox "不正解。正しい単語は: " & word
End If
DoEvents ' Excelの表示を更新
Loop
MsgBox "ゲーム終了! 最終スコア: " & score
End Sub
Function LoadWordsFromFile() As Boolean
Dim filePath As String
Dim fileNum As Integer
Dim word As String
Dim wordCount As Long
' ファイル選択ダイアログを表示
filePath = GetFilePath()
If filePath = "" Then
MsgBox "ファイルが選択されませんでした。", vbExclamation
LoadWordsFromFile = False
Exit Function
End If
' ファイルを開く
fileNum = FreeFile
On Error GoTo ErrorHandler
Open filePath For Input As fileNum
' 単語数をカウント
wordCount = 0
Do While Not EOF(fileNum)
Line Input #fileNum, word
wordCount = wordCount + 1
Loop
' 配列のサイズを単語数に合わせて再設定
ReDim words(0 To wordCount - 1)
' ファイルポインタを先頭に戻す
Seek fileNum, 1
' 単語を配列に読み込む
wordCount = 0
Do While Not EOF(fileNum)
Line Input #fileNum, word
words(wordCount) = Trim(word)
wordCount = wordCount + 1
Loop
' ファイルを閉じる
Close fileNum
MsgBox wordCount & "個の単語を読み込みました。", vbInformation
LoadWordsFromFile = True
Exit Function
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
If fileNum > 0 Then Close fileNum
LoadWordsFromFile = False
End Function
Function GetFilePath() As String
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "単語リストファイルを選択してください"
.Filters.Clear
.Filters.Add "テキストファイル", "*.txt"
.AllowMultiSelect = False
If .Show = -1 Then
GetFilePath = .SelectedItems(1)
Else
GetFilePath = ""
End If
End With
End Function
Function GetRandomWord() As String
If UBound(words) < 0 Then
GetRandomWord = "単語が読み込まれていません"
Else
Randomize
GetRandomWord = words(Int(Rnd * UBound(words)))
End If
End Function
単語リストのサンプルはこちらです。単語が200あります。こちらを.txtの拡張子のテキストファイルとして保存してください(例えばinputs.txt)
ability
able
about
above
accept
according
account
across
act
action
activity
actually
add
address
administration
admit
adult
affect
after
again
against
age
agency
agent
ago
agree
agreement
ahead
air
all
allow
almost
alone
along
already
also
although
always
American
among
amount
analysis
and
animal
another
answer
any
anyone
anything
appear
apply
approach
area
argue
arm
around
arrive
art
article
artist
as
ask
assume
at
attack
attention
attorney
audience
author
authority
available
avoid
away
baby
back
bad
bag
ball
bank
bar
base
be
beat
beautiful
because
become
bed
before
begin
behavior
behind
believe
benefit
best
better
between
beyond
big
bill
billion
bit
black
blood
blue
board
body
book
born
both
box
boy
break
bring
brother
budget
build
building
business
but
buy
by
call
camera
campaign
can
cancer
candidate
capital
car
card
care
career
carry
case
catch
cause
cell
center
central
century
certain
certainly
chair
challenge
chance
change
character
charge
check
child
choice
choose
church
citizen
city
civil
claim
class
clear
clearly
close
coach
cold
collection
college
color
come
commercial
common
community
company
compare
computer
concern
condition
conference
Congress
consider
consumer
contain
continue
control
cost
could
country
couple
course
court
cover
create
crime
cultural
culture
cup
current
customer
cut
dark
data
daughter
安心してください。VBAがわからなかったとしても、これから実行方法をできるだけ丁寧に説明いたします。
実行方法
①開発タブを有効化する
Excelを開いて新しいブックを作成し、ALT+T+Oを順番に押してExcelのオプションから「リボンのユーザー設定」を選んで開発タブを有効化します。
②VBEエディタの起動
Excelのシートに戻りALT+F11キーを同時押しします。そうすると、Microsoft Visual Basic For Applicationsというタイトルのウィンドウが開きます。
③標準モジュールの挿入
挿入タブから標準モジュールを選択し空のモジュールを作成します。
④👆のコードを貼り付けてください
貼り付けたらCTRL+Sで保存してエディタを閉じましょう。
⑤ 実行
ALT+F8キーを同時押しして、作成したTypingGameを選んで実行しましょう。 1分間のタイピングゲームが始まります!実行ボタンを押す前に深呼吸を忘れずにw
⑥実行したらまずファイルを読み込む
上の方で紹介したinputs.txtを指定しましょう
B1セルの値と同じ値をダイアログに入力しましょう。1分間でいくつ入力できるでしょうか?
※注意:マクロ(VBA)のファイルは必ずxlsmのマクロ実行専用の拡張子で保存してください
今回作ったVBAはマクロと呼ばれています。マクロはマクロ実行ファイルでないと実行できません。保存するときはご注意ください。
おわりに
いかがでしたでしょうか?タイピングの正確性は年齢を重ねても改善し続けることができると思います。
日頃からタイピングを意識して生産性を上げて定時で帰りましょう!
🎁次のアドベントカレンダーは
「SHIFT発!障がい者雇用でデザイン業務をして気づいたこと」
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/