#735 | 日付を数字を使った英語の序数表記にするには? | VBA | |
「序数」とは順序を表す表記で、英語の「ファースト(1st)、セカンド(2nd)、サード(3rd)・・・・・」のことです。 日付の場合、月名の英語表記や数字のみの日付表記はコントロールの「書式」プロパティや「Format$関数」などで簡単に置き換えられますが、この序数に関しては単純にそれらでは変換できません。また、「4th」のようにすべてに「th」を付ければよいというわけでもありませんし、下1桁が「1」であっても「11」は「11st」ではなく「11th」とするなど、例外パターンもあります。 そこでオリジナルの関数(Functionプロシージャ)を使って、引数で渡された日付の日にち部分について、数字を使った英語の序数表記にして返す例を紹介します。なお、序数自体は大きな数字までありますが、日にちは最大で「31」ですので、そこまでを対象としたものとします。 まず、フォームやレポートのモジュールに下記のプロシージャを作ります。もし標準モジュールに記述したい場合は1行目の「Private」を「Public」に書き換えてください。 Private Function GetOrdinal(dtmDate As Date) As String '日付を数字を使った英語の序数表記にして返す Dim strRet As String Select Case Day(dtmDate) Case 1, 21, 31 strRet = "st" Case 2, 22 strRet = "nd" Case 3, 23 strRet = "rd" Case Else strRet = "th" End Select GetOrdinal = Format$(dtmDate, "d") & strRet End Function 次に上記プロシージャを呼び出す側の例です。ここではレポートを使って、テーブルに保存されている日付をそのまま出力するとともに、その右にそれを序数表記にしたものを出力します。 そのレポートデザインは下図のようなものです。 ここで、右側のテキストボックスの「コントロールソース」プロパティに次の式を設定します。序数表記にした日にちと、月の英語表記を繋げて出力しています。 =GetOrdinal([日付]) & " " & Format$([日付],"mmm") これを実行(プレビュー)すると下図のように出力されます。 |
|||
|
Copyright © T'sWare All rights reserved |