画面で年月のみを入力/表示し、それをテーブルに保存する場合、どのような方法があるかを説明します。
Forguncyのカレンダーについて
「日付」のセル型を使用すると、既定で「年月日」のカレンダーが表示されます(左の画像)。赤枠をクリックすると「年月」のカレンダーに切り替えることができます(右の画像)。ただし、カレンダーから月を選択してもセルには「2023/10/1」のように日が表示され(画像の緑枠)年月のみに変更して入力することはできません。
保存するテーブルのデータ型によって以下のような動作になります。
テーブルのデータ型が「日付/時刻」型の場合
-
リストビュー上で入力する場合
セルはカレンダー表示となり、年月のみで入力させることはできません(セル型に「日付」を指定しても指定しなくてもカレンダーが表示されます)。
また、カレンダーから選択する際、セルには「2023/10/1」のように年月日が表示されます。これを、年月のみに変更することはできません(画像の緑枠参照)。しかしながら、「セルの書式設定」を「yyyy"/"m」にすることで、セルからフォーカスを移動させた際、年月のみの表示されます。
「年月」表示のカレンダーから選択して新規でテーブルに保存すると、選択年月+日(日付は1日」の値が保存されます。 -
通常セルで入力する場合
・セル型に「日付」を指定すると上記のリストビュー上での入力と同じ動きになります。
・セル型に「テキストボックス」を使用すると、書式設定で年月のみを表示できますが、入力時にシリアル値と呼ばれる数値が表示されます。このシリアル値の入力を年月で入力するように変更することはできません。
テーブルのデータ型が「テキスト」型の場合
-
通常セルで入力する場合
・セル型に「テキストボックス」を使用すると、文字として年月をテーブルに保存できます。
・セル型に「日付」を指定して入力することはできません。 -
リストビュー上で入力する場合
・セル型に「テキストボックス」を使用すると、文字として年月をテーブルに保存できます。
・セル型に「日付」を指定する場合、複数の機能を組み合わせることでカレンダーからどの日を選択しても、表示上は年月表示させ、さらに年月をテキストの文字列としてテーブルに保存することができます(リストビューは即時更新しない場合のみに限る)。
具体的な方法は、次のとおりです(サンプルプロジェクトをダウンロードできます)。
リストビューのセルに「日付」セル型を指定することで、そのセルにコマンドの指定が行えるようになります。
コマンド内の処理は、セルの値が変更された時(つまりカレンダーで選択された時)に実行されますので、このコマンド内で、カレンダーの日付(シリアル値で内部保持されています)を数式を使用して年月の文字列に加工して、リストビューを更新することで、年月表示ができるようになります。
「変数の設定」コマンドで以下のような数式を指定してカレンダーの日付を年月の文字に加工します。加工後、「リストビューの操作」コマンドで更新してください。
・数式の例(サンプルプロジェクトでは、AA5が「日付」セル型になります)=IF(AA5<=1,"",TEXT(AA5,"yyyy/m"))
注意事項
リストビューは即時更新しない場合のみに、上記の方法が利用できます。リストビューを即時更新するようにしている場合(リストビューを右クリックして「リストビュー設定」ー「データ」タブの「リストビューデータを即時更新しない」のチェックがオフの時)は使用できません。
これは、リストビューの即時更新のタイミングと、セル型のコマンド内でリストビューを更新するタイミングが非同期で行われているため、どちらが先に行われるか確定していないため、タイミングによって正しく加工されないためです。