top of page

​タグ一覧

配列処理(67)

階層化フォーム(33)

ファイル操作(23)

シート・セル操作(11)

コード自動生成(10)

ユーザーフォーム(8)

図形操作(7)

GAS(5)

アニメーション(5)

技術解説(4)

副業(4)

考え方(4)

条件付き書式(4)

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

Enum(3)

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

ココナラ(3)

クリップボード(3)

介護(3)

開発効率化(2)

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

PDF(2)

フリーランス(2)

リスキリング(2)

Excel(2)

Excel小ネタ(2)

数学(2)

Outlook(2)

文字列操作(2)

小説(2)

HTML(2)

JavaScript(2)

日報(2)

カレンダー(2)

パズル(2)

ステータスバー(1)

コード解析(1)

静的変数(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

六角形(1)

Excel遊び(1)

ボウリング(1)

時計(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

イベント(1)

溶接ロボット(1)

VBA(1)

脱Excel(1)

Discord(1)

ECサイト(1)

CSV(1)

楽天(1)

保育士(1)

シフト表(1)

CDP(1)

楽天市場(1)

経理(1)

javascript(1)

医療(1)

文書作成(1)

LookerStudio(1)

シフト(1)

セキュリティ(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

罫線(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

開発事例(1)

カレンダー入力フォームの最速実装


概要


 今回紹介するのは、普段私が行っているExcel VBA開発の一例です。実際の操作感や開発スピードをイメージしていただくことを目的としています。


 例として取り上げるのは「日付入力用のカレンダー入力フォーム」です。いわばユーザーフォームの拡張版で、セルをダブルクリックするとカレンダーが表示され、そこから日付を入力できる仕組みになっています。


 具体的には、祝日一覧や会社の営業日カレンダーなどをあらかじめ登録しておくことで、休日入力や営業日入力を便利に行えるようになります。このような仕組みをどのように実装するのかを、実際の動画を交えて紹介していきます。


 開発作業時にはすでに準備しているものを利用し、1分以内に形に実装が完了するように整えております。今回はこちらを例に、具体的な解説を進めていきたいと思います。

 

 読者様に起きましては

こんなノウハウがあるのか」「この方法はアイデアとして採用したい

と思っていただければ幸いです。


録画デモンストレーション


技術解説

 動画では一瞬でやっていますが、作業手順は次の通りです。

①「B2」にヘッダーの入力と罫線の設定

②「B3」以下に何か入力するな罫線が追随するを条件付きを設定する

③「B2」に名前定義で「日付1」と入力しておく

④ワークシートのコードウィンドウにテンプレートのイベントプロシージャのコードを入力する


「スーパー開発ショートカット」

 途中途中でのコードを入力する記の画像のようなユーザーフォームが表示されてます。こちらは普段は「スーパー開発ショートカット(改名予定)」と呼んでいますが、F1キーを押すことでユーザーフォームが実行されて、そちらからコマンドをCADソフトのような感じにキーボードで入力することで特定のマクロを呼び出すような処理を行っています。

 まあ、このような操作をすることで、「どののマクロを実行するかっていうのを手が覚えておく」ことができます。通常はこのような汎用的なマクロはリボンなど登録しますが、この方法ではリボンの様にいちいちマウスを動かす必要もなく、特定のマクロを一瞬で呼び出せるようにしてあります。

 ちなみに最速な方法として、各マクロをショートカットキーを登録するっていう方法もありますがショートカットキーの登録だと、普段デフォルトで利用するようなショートカットキーを上書きしてしまったり、どんどん機能が増えてしまった場合にショートカットキーの登録先が無くなってしまったりというデメリットがあるのですが、スーパー開発ショートカットではこのようなデメリットも一切なくなります。

 以上の様な理由で最も最速でマクロを呼び出せる機能を常に常に使っております。

スーパー開発ショートカット画面1
スーパー開発ショートカット画面1
スーパー開発ショートカット画面2
スーパー開発ショートカット画面2

追随する罫線(条件付き書式)

 B3以下に設定している条件式を解説します。

 こちらは。1つの条件書式を下の画像のように設定しています。

 1つ目の条件付き書式は空白でない場合は左右に罫線を付けて、2つ目め条件付き書式は1つ下のセルと値が異なる場合に下側に罫線を設定するようになっています。


追随する罫線の条件付き書式
追随する罫線の条件付き書式

 その下側の条件付き書式は下記の画像になっており、OFFSET関数を利用することで、途中に行が挿入されたりとか消去されたりということの影響を受けないような関数となっております。 

追随する罫線の条件付き書式の2番目の数式
追随する罫線の条件付き書式の2番目の数式

 この条件付書式を設定する時に、下記のような汎用プロシージャを利用しています。引数でTargetにその条件付書式を設定したいセル範囲を与えるだけで条件付書式が設定できるようになってます。


ダブルクリックでカレンダー呼出用のイベントプロシージャ

 ダブルクリックでカレンダー呼出のためにはワークシートのコードウィンドウには下記のようなプロシージャを設定しておりました。


 このコードを記述する時に、イミディエイトウィンドウで「MCCCarendarDblClickShow」というプロシージャを実行しました。こちらは特定のテンプレートのコードを実行してクリップボードに格納するためだけの処理で、よく記述するようなコードはこのような形でいつでも呼び出せるようにして、1から記述することはせずコーディングの時短を図っています。


 ダブルクリックイベントプロシージャに記述している「EventShowCalendarDayCol」プロシージャですが、こちらはワークシート内において名前定義で「日付*」のような名前定義がある場合、そのセル以下をセル範囲として、そこの範囲をダブルクリックするとカレンダーが出るような処理を実現しております。すなわち、ワークシート内でそのような名前定義をもう設定するだけでカレンダーが出現するような機能を後で追加するようなことも可能なようなことを考えて構築しているものです。



カレンダー入力フォーム

 日付を入力するようのカレンダーは下記のような画像のようなものが設定しております。こちらはユーザーフォームとクラスモジュールを利用したものです。

カレンダー入力フォーム
カレンダー入力フォーム

 コードは記載しませんが、添付の圧縮ファイルの中にインポート用のファイルを添付しておりますので。利用したい場合はこちらを利用するようにしてください。


 下記画像のように2つのbasファイルが入っていますが、こちらをVBEでそのままクリック&ドラッグでインポートすれば、カレンダー入力フォームがインポート完了です。

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


コメント

5つ星のうち0と評価されています。
まだ評価がありません

評価を追加
Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page