「TODAY関数で自動的に入力された今日の日付が更新されないようにしたい」
という要望に対する解決策として、[F9]キーで計算結果にする方法と、ショートカットキー:[Ctrl]+[;](セミコロン)で今日の日付が入力できることをご紹介しました。
これらの方法をご紹介すると、
「マクロでやるにはどうしたらいいのでしょうか?」
「マクロを組んだらもっとスマートに入力できるんじゃないですかね?」
といったご質問をいただくことがあります。
[F9]キーや[Ctrl]+[;]キーを利用する方法は、Excelで対応しているのではなく、ユーザー側のスキルを上げろということなので、スキルに差がある複数の人が操作するような場合には現実的ではありません。
もちろんVBA(Visual Basic for Applications)でマクロを組んでしまえば、何らかのアクションがあったときに今日の日付をセルに入力するなんてことは簡単です。
どのアクションやタイミングで日付を入力するかによって、様々な実装方法が考えられますが、ダブルクリックしたときに入力するというのはいかがでしょう。
※C1:C10セルでダブルクリックしたときに今日の日付を入力する例
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("C1:C10")) Is Nothing Then Exit Sub
If ActiveCell = "" Then
ActiveCell = Date
Cancel = True
End If
実際にアクティブセルに今日の日付を入力するのは
「ActiveCell = Date」
の部分です。
C1:C10セルにだけ、ダブルクリックで日付を入力させるために、
「If Intersect(Target, Range("C1:C10")) Is Nothing Then Exit Sub」
でC1:C10セルでないときには処理を抜けるようにしています。
他のセルでダブルクリックしたときに日付入力させたい場合、
「Range("C1:C10")」
適宜の部分を変更してください。
既に何らかのデータが入力されているときには、日付入力の処理を行いたくないので
「If ActiveCell = "" Then」
というIf文を入れセルが空っぽのときだけ処理を行うようにしています。
セルでダブルクリックをすると、通常はセル内にカーソルが入ります。
しかし今回のダブルクリックで日付入力を行った場合、セル内にカーソルが入る必要はないので
「Cancel = True」
で、通常のダブルクリックイベントをキャンセルしています。
▼サンプルファイル(003003.xls 32KByte)ダウンロード
サンプルファイルの「Sheet1」イベントモジュールに、上記のイベントプロシージャを作成してありますので、興味のある方はご確認ください。
- Newer:画像キャプチャ型プロキシ−aguse Gateway
- Older:ページ番号を削除したい
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 今日の日付を自動的に入力する−Worksheet_BeforeDoubleClick