top of page

​タグ一覧

配列処理(76)

シート・セル操作(34)

階層化フォーム(33)

ファイル操作(31)

開発事例(26)

図形操作(24)

設計思想(14)

講座実施報告(12)

開発効率化(10)

ユーザーフォーム(10)

コード自動生成(10)

ココナラ(9)

数学(9)

文字列操作(8)

イベントプロシージャ(7)

GAS(7)

Webアプリ(6)

副業(5)

アニメーション(5)

技術解説(4)

その他(5)

イミディエイトウィンドウ(4)

OneDrive(4)

Googleスプレッドシート(4)

クリップボード(4)

条件付き書式(4)

介護・福祉(4)

小説(3)

HTML(3)

JavaScript(3)

公開ツール(3)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

Antigravity(2)

デスクトップアプリ(2)

スクレイピング(1)

スプレッドシート(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

WebAPI(1)

学校(1)

CAD(1)

PowerShell(1)

python(1)

EventDblClickShowCalendarNumberFormatIsDate|表示形式が日付のセルをダブルクリックだけでカレンダーが起動するようにする|Excel VBA

3月4日
読了時間: 3分

概要(ダブルクリックするだけでカレンダーが出てくる)

今回は、Excelのワークシート上で 表示形式が「日付」になっているセルをダブルクリックするだけで、カレンダー(UserForm)を起動できる ようにする実装例を紹介します。


Googleスプレッドシートには、入力規則で日付を指定するとカレンダーが表示される標準機能がありますが、Excelには同等の機能が標準では用意されていません。そこでVBAを使い、セルの表示形式を日付にしておくだけで、ダブルクリック時にカレンダーを表示できる仕組みを実現します。


通常の日付入力は、数字やスラッシュを手入力する必要があり、入力ミスや表記ゆれが起きやすいのが難点です。カレンダー入力にすることで、直感的に日付を選べるようになり、入力の手間とミスを減らせます。

EventDblClickShowCalendarNumberFormatIsDate|表示形式が日付のセルをダブルクリックだけでカレンダーが起動するようにする|Excel VBA


実際の実装例

実際の動作は、下の動画のとおりです。対象のセル範囲の表示形式を「日付」に設定しておくと、そのセルを ダブルクリックしたタイミングでカレンダーが起動し、日付を選択して入力できるようになります。


「日付列だけ入力を簡単にしたい」「入力ミスを防ぎたい」といった場面で、特に効果が出やすいUI改善です。




実装手順


動画にも実際のコードを掲載していますが、ここでは実装手順を文章で整理します。本機能は、シートのダブルクリックイベント(Worksheet_BeforeDoubleClick)から、汎用プロシージャ EventDblClickShowCalendarNumberFormatIsDate を呼び出す構成です。


1. シート側にダブルクリックイベントを記述する

まず、対象シートのコードモジュール(例:Sheet1)に、ダブルクリック時のイベントを記述します。ここでは Target(クリックされたセル)と Cancel(既定動作のキャンセル)を引数として、汎用プロシージャへ渡すだけでOKです。


2. 汎用プロシージャ側で「表示形式が日付か」を判定する

次に、汎用プロシージャ EventDblClickShowCalendarNumberFormatIsDate を標準モジュールに用意します。ダブルクリックしたセルは Target(Rangeオブジェクト)として渡されるため、まず Target.NumberFormatLocal から表示形式を取得し、日付形式かどうかを判定します。


判定方法はシンプルで、表示形式の文字列に y / m / d が含まれているかどうかを確認します。日付形式と判定できた場合は Cancel = True としてセル編集を止め、カレンダー(UserForm)を表示します。


3. カレンダー(UserForm)はパッケージをインポートして準備する

カレンダー本体は、下記のZIPパッケージとして用意しています。ダウンロード後、VBE(Visual Basic Editor)のプロジェクトエクスプローラーに ドラッグ&ドロップ でインポートしてください。



ZIPの中には、以下のファイルが入っています。

  • clsBtnDay.bas(日付ボタン関連のクラス)

  • frmCalendar.bas(UserForm本体のコード)

  • frmCalendar.frx(UserFormのフォーム定義)

この3点が取り込めれば、カレンダーフォームは利用できる状態になります。


カレンダー入力フォームの中身
カレンダー入力フォーム.zipの中身

4. フォーム表示位置をセルの近くに合わせる(任意)

カレンダーは frmCalendar.Show vbModeless で表示していますが、さらに使い勝手を上げるため、選択セルの近く(右上など)にフォームを配置しています。配置処理には SetFormNearCell を利用します。


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

softex-celwareロゴ 透過 横長.png

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page