Excel
開発タブを追加する
デフォルトでは、[開発]タブは非表示となっています。マクロやVBAを使用する場合は、[開発]タブを表示する必要があります。表示する
手順
- Excelを起動し、上部の[ファイル]タブをクリックし、左側に表示される[オプション]メニューを選択します。
- [Excelオプション]が表示されるので、左側の[リボンのユーザー設定]を選択し、 右側の[メインタブ]ボックス内の[開発]チェックボックスにチェックを付けて[OK]ボタンをクリックします。
フリーVBAのカレンダーダイアログを使って、各セルで使用できるマクロを作成する
表示する
現在、いろいろなカレンダーが存在し、いろいろな制限(Excelのバージョン縛りや、32ビット、または64ビット縛りが殆ど)があるなか、
以下の条件を満たすカレンダーを使用し、実装します。(画面のカレンダーは、日本語表示に修正)
・Excel2007以降対応
・32ビット、64ビット両対応
・Excel2007以降対応
・32ビット、64ビット両対応
使用するカレンダーVBA
ダウンロード先:https://trevoreyre.com/portfolio/excel-datepicker/
実装
- ダウンロードした"CalendarForm+v1.5.2.zip"ファイルを任意のフォルダへ解凍します
- Excelを起動します
- [開発]タブの[Visual Basic]をクリックします
- [Microsoft Visual Basic for Applcation]フォームが表示されるので、[ファイル(F)]→[ファイルのインポート(I)...]メニューを選択します
- 先ほど解凍した中の[CalendarForm.frm]を選択し、[開く]ボタンをクリックします
- 左側の[プロジェクト]から使用するシート(例:Sheet1)を右クリックし、ポップアップメニューから[コードの表示(O)]を選択します
- SheetコードMDIフォームが表示されるので、左上のプルダウンメニューから[Worksheet]を選択します(右上の[SelectionChahge]はそのままにします)
- 表示されたWorksheet_SelectionChange関数を以下のように変更します
Private Sub WorkSheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("A:A,C:C")) Is Nothing Then Buttons(1).Visible = False Else Buttons(1).Top = Selection.Top Buttons(1).Left = Selection.Left + Selection.Width + 2 Buttons(1).Width = 14 Buttons(1).Height = 14 Buttons(1).Caption = "田" Buttons(1).Visible = True End If End Sub
Range("A:A,C:C")はカレンダー選択可能なセル列を示し、必要に応じて、この部分を変更します。
- Excelに戻り、[開発]タブの[挿入▼][フォームコントロール]内の[ボタン]をクリックし、シートの任意の位置に配置します
- [マクロ登録]ダイアログが表示されるので、マクロ名をCalendarBtn_Clickに変更して[新規作成(N)]ボタンをクリックします
- [Microsoft Visual Basic for Applcation]フォームに[Moduleコード]MDIフォームが表示されるので、内容を以下のように変更します
Dim dt As Double Sub CalendarBtn_Click() dt = CalendarForm.GetDate If dt <> 0 Then Selection.Value = dt End Sub
- [Microsoft Visual Basic for Applcation]フォームを閉じます
- A列のいずれかのセルに移動すると、[田]ボタンが表示されるので、右クリックして、[コントロールの初期設定(F)...]を選択します
- [コントロールの初期設定]ダイアログが表示されるので、[保護タブ]の[ロック]と[文字列のロック]のチェックマークを外し、[OK]ボタンをクリックします
この作業を忘れると、シートを保護したときに、正常に動作しません。
- ファイルを保存します
ファイルの種類をExcelマクロ有効ブック(.xlsm)に変更して保存してください。