« 芝浦ベイマでお買い物 | トップページ | 続・豊潤かすてら切り落し »

2020.02.15

マウス操作で日付を入力する

D020215

<問題点>

エクセルで日付を入力するときってどうやってる?

普通はテンキーから直接 2020/2/15 というふうに手入力するもの。当たり前っすなぁ。(笑)

[Ctrl]+[;] で、今日の日付が入力できるので、知ってる人はそれを活用するかもしれない。ただ、それだと入力できるのはあくまでも今日の日付だけ。例えば、昨日の日付とか5日前の日付とかだと面倒くさい。

[Ctrl]+[;] で今日の日付を出し、バックスペースで後ろの何文字かを消して、入れなおす操作が必要になる。まだ月中ならマシだが、月がまたがると月まで消すハメになる。かなり面倒くさい。

そして入力するのが1個2個ならいいが、それが100個200個だと面倒くさい領域を超え、かなり大変である。なんとか少しでも楽して入力したい。

さて。


<解決法>

VBAで日付を簡単にコピペできるようにしてみた。

D020215b

上の画像では……

(1) 日付を入力したいセルに、セルポインタを移動しておく。
(2) “D2”に入ってる日付を、すぐ隣のスピンボタンで増減させる。
(3) ペーストボタンをクリックすると、セルポインタの位置に“D2”の日付がペーストされる。(画像はペースト後の状態)

これで、少しは楽になる……と思う。マウス操作だけなので、片手で入力できるし。

D020215d

<解説>

まず、スピンボタンは値を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 With

  ActiveSheet.Paste

End Sub

やってることは、“D2”に入ってる値をクリップボードに入れ、セルポインタのある位置にペースト。それだけ。

そう、このVBA自体は日付であるとかないとか、全く関係ないっすよ。

<応用>

かけ離れた日付を交互に入力しなければならないような場合は、この仕組みを2個用意すればいい。

また、コピペする値は日付に限らないので、別テーブルから特定の値をLOOKUPしてペーストするなんてこともできる。入力に必ずこの仕組みを使う事にすれば、入力するセルにいちいち入力規則を設定しなくても良い…ということもメリットになり得ると思うがどうかな。


D020215c

全く関係ない話題。

コメダで豆をもらい突然思い出したこと。

なんか忙しくて、折角節分用の豆を買ったのに、節分も豆も存在自体を忘れていた。

結局適当に食べた。

|

« 芝浦ベイマでお買い物 | トップページ | 続・豊潤かすてら切り落し »

テクノロジ」カテゴリの記事