マウス操作で日付を入力する
<問題点>
エクセルで日付を入力するときってどうやってる?
普通はテンキーから直接 2020/2/15 というふうに手入力するもの。当たり前っすなぁ。(笑)
[Ctrl]+[;] で、今日の日付が入力できるので、知ってる人はそれを活用するかもしれない。ただ、それだと入力できるのはあくまでも今日の日付だけ。例えば、昨日の日付とか5日前の日付とかだと面倒くさい。
[Ctrl]+[;] で今日の日付を出し、バックスペースで後ろの何文字かを消して、入れなおす操作が必要になる。まだ月中ならマシだが、月がまたがると月まで消すハメになる。かなり面倒くさい。
そして入力するのが1個2個ならいいが、それが100個200個だと面倒くさい領域を超え、かなり大変である。なんとか少しでも楽して入力したい。
さて。
<解決法>
VBAで日付を簡単にコピペできるようにしてみた。
上の画像では……
(1) 日付を入力したいセルに、セルポインタを移動しておく。
(2) “D2”に入ってる日付を、すぐ隣のスピンボタンで増減させる。
(3) ペーストボタンをクリックすると、セルポインタの位置に“D2”の日付がペーストされる。(画像はペースト後の状態)
これで、少しは楽になる……と思う。マウス操作だけなので、片手で入力できるし。
<解説>
まず、スピンボタンは値を0~30000の間でしか設定できないため、直接“D2”とリンクしてしまうと1900/1/0~1982/2/18でしか設定できない。そこで止むを得ずゲタを履かす。
上の画像では、ペーストボタンで隠してあるセル“F2”にゲタにする値 40000 を入れ、スピンボタンはそれ自体で隠してある“E2”にリンク、とりあえず今日の日付(2020/2/15)にしたければ、値を 3876 に設定。
“D2”の表示形式を日付に設定し、数式 E2+F2 を入れる。(E2+40000ってやっても良いけどな)
で、ペーストボタンで実行するVBAはこれ。
Private Sub CommandButton1_Click()
With New MSForms.DataObject
.SetText Range("D2").Value
.PutInClipboard
End WithActiveSheet.Paste
End Sub
やってることは、“D2”に入ってる値をクリップボードに入れ、セルポインタのある位置にペースト。それだけ。
そう、このVBA自体は日付であるとかないとか、全く関係ないっすよ。
<応用>
かけ離れた日付を交互に入力しなければならないような場合は、この仕組みを2個用意すればいい。
また、コピペする値は日付に限らないので、別テーブルから特定の値をLOOKUPしてペーストするなんてこともできる。入力に必ずこの仕組みを使う事にすれば、入力するセルにいちいち入力規則を設定しなくても良い…ということもメリットになり得ると思うがどうかな。
全く関係ない話題。
コメダで豆をもらい突然思い出したこと。
なんか忙しくて、折角節分用の豆を買ったのに、節分も豆も存在自体を忘れていた。
結局適当に食べた。
| 固定リンク
「テクノロジ」カテゴリの記事
- ハンガー型乾燥機(2024.11.11)
- NORDMÄRKEに+α(2024.09.26)
- 登記の電子申請(結果)(2024.07.06)
- 思う壺………な果実(2024.06.26)
- 登記の電子申請(2024.06.15)