VBA 【Format関数】文字の書式を変換



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、takaです(^^♪

さて、VBAのシステムを作成していく中でちょくちょく使わなくてはいけなくなるFormat関数、様々な表示方法がありますので今回はここで覚えて見やすいシステムを作っていきましょう(^^)/

VBAのFormat関数とは?

Excel VBA の Format 関数を紹介します。

Format 関数は値を指定した書式に変換します。

例:2017/1/1→平成29年1月1日など

format関数は便利な関数です、使いこなすことが出来れば書式変換などにも使えるので頑張って覚えておきましょう。

Format関数の書式

Format関数の書式は以下の通りです。

引数名説明
expression必ず指定します。任意の式を指定します。
format省略可能。有効な名前を持つ、またはユーザー定義の書式指定式。
firstdayofweek省略可能。最初の曜日を指定する定数です。
firstweekofyear省略可能。年内で、最初の週を指定する定数です。

Format関数の解説

※Format関数の引数並びに設定の解説は、かなりの数となっていますのでマイクロソフトのヘルプより引用します。

以下Microsoftヘルプより引用

firstdayofweek 引数の設定は次のとおりです。

定数説明
vbUseSystem0NLS API 設定を使用します。
vbSunday1日曜日 (既定)
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

firstweekofyear 引数の設定は次のとおりです。

定数説明
vbUseSystem0NLS API 設定を使用します。
vbFirstJan111 月 1 日が含まれる週から開始します (既定)。
vbFirstFourDays24 日以上が含まれる最初の週が年の第 1 週目になります。
vbFirstFullWeek31 週間全体が含まれる最初の週がその年の第 1 週目になります。

 

ユーザー定義文字列書式 (Format 関数)

以下の文字を使用して、文字列の書式指定を作成できます。

文字説明
@文字プレースホルダー。文字またはスペースを表示します。書式文字列でアット マーク (@) の表示位置に文字がある文字列の場合は、その文字が表示されます。それ以外の場合は、その位置にスペースが表示されます。プレースホルダーは、書式文字列に感嘆符 (!) がない限り、右側から左側に向かって指定されます。
&文字プレースホルダー。文字が表示されるか、または何も表示されません。アンパサンド (&) の表示位置に文字がある文字列の場合は、その文字が表示されます。それ以外の場合は、何も表示されません。プレースホルダーは、書式文字列に感嘆符 (!) がない限り、右側から左側に向かって指定されます。
<強制的に小文字にします。すべての文字を小文字で表示します。
>強制的に大文字にします。すべての文字を大文字で表示します。
!プレースホルダーを左から右に指定していくように強制的に設定します。既定では、プレースホルダーは右から左に指定していくように設定されています。

ユーザー定義日付/時刻書式 (Format 関数)

以下の表は、ユーザー定義日付/時刻書式の作成に使用できる文字を示します。

文字説明
(:)時刻区切り文字。一部のロケールでは、時刻区切り文字を表す目的で他の文字が使用されることがあります。時刻の値が書式設定されるときに、時刻区切り文字によって時、分、および秒が区切られます。書式設定された出力で時刻区切り文字として使用される実際の文字は、システム設定によって決まります。
(/)日付の区切り記号。ロケールによっては、他の文字が日付の区切り記号として表示される場合があります。日付値の書式が設定されている場合、日付、月、および年は、日付の区切り記号によって区切られます。書式設定された出力で、日付の区切り文字として実際に使用される文字は、システム設定によって決まります。
c日付を ddddd、時刻を ttttt 形式で、日付、時刻の順序で表示します。日付の連続数値に小数部がない場合は、日付情報だけを表示します。時刻に整数部がない場合は、時刻情報のみを表示します。
d前に 0 を付けない数値 (1 ~ 31) で日を表示します。
dd前に 0 を付けた数値 (1 ~ 31) で日を表示します。
ddd曜日の省略形 (Sun ~ Sat) で日を表示します。
dddd曜日の完全な名前 (Sunday ~ Saturday) で日を表示します。
ddddd日付を完全な日付 (日、月、および年を含む) で表示します。表示形式は各システムの短い日付形式の設定に従っています。既定の短縮日付フォーマットは、m/d/yy です。
dddddd日付の連続数値を完全な日付 (日、月、および年を含む) で表示します。表示形式は各システムが認識する長い日付形式の設定に従っています。既定の長い日付形式は、mmmm dd, yyyy です。
aaaadddd と同じですが、文字列がローカライズされた形式です。
w曜日を数値 (日曜日が 1 で土曜日が 7) で表示します。
ww1 年のうちの何週目であるかを数値 (1 ~ 54) で表示します。
m前に 0 を付けない数値 (1 ~ 12) で日を表示します。h または hh の直後に m が続く場合は、月ではなく分が表示されます。
mm前に 0 を付ける数値 (01 ~ 12) で日を表示します。h または hh の直後に m が続く場合は、月ではなく分が表示されます。
mmm月名の省略形 (Jan ~ Dec) で月を表示します。
mmmm完全な月名 (January ~ December) で月を表示します。
oooommmm と同じですが、文字列がローカライズされた形式です。
q1 年の四半期を数値 (1 ~ 4) で表示します。
y1 年の何日目かを数値 (1 ~ 366) で表示します。
yy西暦の年を下 2 桁の数値 (00 ~ 99) で表示します。
yyyy西暦の年を下 4 桁の数値 (100 ~ 9999) で表示します。
h前に 0 を付けない数値 (0 ~ 23) で時間を表示します。
Hh前に 0 を付けた数値 (00 ~ 23) で時間を表示します。
N前に 0 を付けない数値 (0 ~ 59) で分を表示します。
Nn前に 0 を付けた数値 (00 ~ 59) で分を表示します。
S前に 0 を付けない数値 (0 ~ 59) で秒を表示します。
Ss前に 0 を付けた数値 (00 ~ 59) で秒を表示します。
t t t t t時刻を完全な時刻 (時間、分、および秒を含む) で表示します。表示形式は、各システムが認識する時刻書式で定義された時刻区切り文字を使用します。先頭に 0 を付ける形式が選択されており、時刻が 10:00 以前の場合は、時刻の前に 0 を表示します。既定の時刻書式は、h:mm:ss です。
AM/PM12 時間形式を使用します。正午までの時間に大文字の AM を、正午から午後 11:59 時までの時間に大文字の PM を付けて表示します。
am/pm12 時間形式を使用します。正午までの時間に小文字の AM を、正午から午後 11:59 時までの時間に小文字の PM を付けて表示します。
A/P12 時間形式を使用します。正午までの時間に大文字の A を、正午から午後 11:59 時までの時間に大文字の P を付けて表示します。
a/p12 時間形式を使用します。正午までの時間に小文字の a を、正午から午後 11:59 時までの時間に小文字の p を付けて表示します。
AMPM12 時間形式を使用します。正午までの時間にはシステムで定義された AM 文字列リテラルを、正午から午後 11:59 時までの時間にはシステムで定義された PM 文字列リテラルを付けて表示します。AMPM は大文字、小文字のどちらでもかまいません。ただし、表示される文字列の大文字、小文字の区別は、各システムの設定で定義した文字列に一致しています。既定の書式は、AM/PM です。

ユーザー定義数値書式 (Format 関数)

以下の表は、ユーザー定義数値書式の作成に使用できる文字を示します。

文字説明
なし書式指定なしで数値を表示します。
(0)桁のプレースホルダーです。数字または 0 を表示します。が、書式指定文字列で 0 が指定されている場所を使っている場合は、該当する数字がその桁に表示されます。それ以外の場合は、その場所に 0 を表示します。

数値の整数部または小数部の桁数が、書式指定式内の 0 の桁数に満たない場合は、その桁位置には 0 を表示します。数値の小数部の桁数が、書式指定式の小数部で指定されている 0 の数より多い場合は、0 の数と同じ桁数に数値が丸められます。数値の整数部の桁数が、書式指定式の整数部の 0 の数より多い場合は、桁をそのまま表示します。

(#)桁のプレースホルダーです。数字を表示するか、何も表示しません。書式指定文字列で # が指定されている場所に該当する桁が、式の結果にある場合は、該当する数字が表示されます。それ以外の場合は、その場所には何も表示されません。

この記号は 0 桁プレースホルダーと同様の機能を持ちます。ただし、数値の桁数が、書式指定式の整数部および小数部にある # 記号よりも同じか少ない場合でも、先頭および末尾に 0 が表示されません。

(.)小数点のプレースホルダーです。ロケールによっては、小数点の区切り記号としてコンマが使用されます。小数点のプレースホルダーにより、整数部および小数部に表示する桁数が決まります。書式指定式でこの記号の左に # 記号だけがある場合、1 未満の数値の先頭は小数点区切り記号になります。小数値の先頭に 0 を表示するには、整数部の最初の桁のプレースホルダーとして 0 を使用します。書式指定結果で小数点のプレースホルダーとして実際に使用される記号は、システムで認識される数値書式によって異なります。
(%)パーセントのプレースホルダーです。式を 100 倍します。書式指定文字列の表示位置にパーセント記号 (%) が挿入されます。
(,)桁区切り記号です。ロケールによっては、桁区切り記号としてピリオドが使用されます。桁区切り記号は、整数部に 4 桁以上ある数値の百の位と千の位を区切ります。書式にある桁区切り記号が桁のプレースホルダー (0 または #) で囲まれている場合は、桁区切り記号の標準使用が指定されます。小数部の指定の有無にかかわらず、小数点のすぐ左に、桁区切り記号が 2 つ隣接する場合や、桁区切り記号がある場合は、”数値を 1000 で割って、必要に応じて丸める” ことを意味します。たとえば、書式指定文字列 “##0,,” を使用して、1 億を 100 として表せます。百万より小さい数字は 0 として表示されます。小数点のすぐ左以外の位置に 2 つの隣接する区切り記号がある場合は、通常の桁区切り記号を指定したものとして処理されます。書式指定された出力で、実際に桁区切り記号として使用される記号は、システムで認識される数値書式によって異なります。
(:)時刻区切り文字。一部のロケールでは、時刻区切り文字を表す目的で他の文字が使用されることがあります。時刻の値が書式設定されるときに、時刻区切り文字によって時、分、および秒が区切られます。書式設定された出力で時刻区切り文字として使用される実際の文字は、システム設定によって決まります。
(/)日付の区切り記号。ロケールによっては、他の文字が日付の区切り記号として表示される場合があります。日付値の書式が設定されている場合、日付、月、および年は、日付の区切り記号によって区切られます。書式設定された出力で、日付の区切り文字として実際に使用される文字は、システム設定によって決まります。
(E- E+ e- e+)指数形式。書式指定式で、E-、E+、e-、または e+ の左に少なくとも 1 つの桁プレースホルダー (0 または #) がある場合、数値は、数値と指数部の間に E または e を挿入して指数形式で表示されます。右にある桁プレースホルダーの数で、指数の桁数が決まります。負の指数にマイナス記号を挿入するには、E- または e- を使用します。負の指数にマイナス記号を入れて、正の指数にプラス記号を入れるには、E+ または e+ を使用します。
– + $ ( )リテラル文字を表示します。これ以外の文字をリテラルとして表示するには、その文字の前に円記号 (\) を付けるか、または二重引用符記号 (” “) で囲みます。
(\)書式指定文字列内の次の文字を表示します。特殊な意味を持つ文字をリテラル文字として表示するには、その文字の前に円記号 (\) を付けます。円記号自体は表示されません。円記号を使用するのは、その文字を二重引用符記号で囲むことと同じです。円記号自体を表示するには、円記号を 2 つ (\\) 使用します。

リテラル文字として表示できない文字には次のような文字があります。日付書式文字および時刻書式文字 (a、c、d、h、m、n、p、q、s、t、w、y、/、および :)、数値書式文字 (#、0、%、E、e、コンマ、およびピリオド)、および文字列書式文字 (@、&、<、>、および !)。

(“ABC”)二重引用符 (” “) で囲まれた文字列を表示します。コードから書式に文字列を含めるには、Chr(34) を使ってテキストを囲みます (34 は引用符 (“) を表す文字コードです)。

Format関数の使用例

実際にFormat関数を使用してみましょう(^^♪ここではよく使うであろう書式をいくつかご紹介します(^^)/

Format関数使用例1:西暦を和暦に変換する

西暦を和暦に変換する機会って結構ありますよね(*_*;下記のコードは日付【2017/01/01】を和暦で返すコードです。

Format関数使用例2:日付の曜日を返す

これは正直応用編となるんでしょうか?(*_*;下記のコードは日付【2017/01/01】の曜日を返すコードです(笑)

Format関数使用例3:桁の区切り点を表示

通貨の桁の区切り点を表示するコードになります【100000000】→【100,000,000】

見積書などを作成するプログラムの場合はこれは必須です(‘ω’)

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

特別企画!IT企業の実情をIT企業の社長に聞いてみた!

独学者が多いVBAプログラマー「せっかくプログラム言語を覚えたし、IT企業に転職しようかな?でも、IT企業って良いイメージ聞かないし実際はどうなんだ?」という疑問にIT企業の社長に直に聞いてみました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です