エクセルで名前(ユーザー名)を自動で入力したいと思ったことはないですか?
本記事は「エクセルで作られたテスト結果書の記入を効率化しよう」と思って書いた記事です。
テスト項目が多い場合、結果を個別に入力するのは当然としても、担当者の名前もすべて入力するのは面倒くさいですよね。
かといって、担当者欄をまとめると複数人で実施した場合に誰が実施したか分からなくなるし…
ということで、結果欄を入力すると自動で担当者まで入力されるようにしましょう!
【やり方】ExcelのVBAとマクロで実現する!
やり方の要点を先に書いておきます。
- ExcelのVBAでユーザー名を取得する関数を作成
担当者欄に「結果が記入されたら、ユーザー名取得関数を呼び出す」マクロを書く
「VBAとか関数って難しそう」と思ってたけど、やってみると簡単!
【手順1】ExcelVBAでユーザー名取得関数を書く
さっそく関数を書いていきます。
まず、エクセルを開いた状態で「Alt + F11」を押しましょう。エクセルとは別にウィンドウが開きますので、メニューバーから「挿入→標準モジュール」を選択してください。その後、ウィンドウ右側の空白部分に以下を書きましょう。
Function GetUserName() As String
GetUserName = Application.UserName
End Function
【手順2】実際にユーザー名を取得してみる
手順1でVBAに関数を書いたら、通常のエクセル画面に戻り、適当なセルに
=GetUserName()
と記入してみましょう。
これでユーザー名が表示されるはずです!
【手順3】「結果が記入されたら」の条件文を追加する
担当者欄にユーザー名を自動入力する条件は
- 結果欄が空白なら、担当者欄は空白
- 結果欄に何か書かれていれば、担当者欄に入力する
としましょう。
仮に結果欄がA1セル、担当者欄がB1セルとすると先ほどの条件は次のように言い換えられます。
- もし、A1セルが空白なら、B1セルも空白とする
- もし、A1セルが空白でないなら、B1セルはユーザー名を表示する
これらの処理をマクロにしたものが以下です。これをB1セルに書きましょう(直接B1セルにコピーでもOKです)。
=IF(A1="","",GetUserName())
以上!
動作を試したい場合は、
- A1セルに何か書いたらB1セルに名前が表示されて
- A1セルの文字を消したらB1セルも空白になること
を確認すると良いと思います。
【まとめ】ExcelVBAもマクロも怖くない
やろうとすることはちょっと複雑に見えても実は意外とシンプルに実現できます。
- VBAでユーザー名取得関数を書く
- マクロを書く
やったことがないと難しそうに思えますが、本当に簡単にできますので、ぜひ他の関数作成やマクロにも取り組んでみてください!
【応用】自動ではなくボタンで入力したい
上記の通り、自動入力でも良いのですが、任意のタイミングで入力したいこともあると思います。
ボタンをクリックしたらユーザー名が入力されるようにした記事を書いてみました。
良かったら参考にしてください。
コメント