VBA関数について
VBAで使う関数って何?よくわかんない!
関数は実務でもたくさん使うんだ!一つずつ覚えていこうね!
関数は決まった計算や処理を行う命令になります。実務を行う上でも関数はよく使います。
マクロ記録機能では関数は記録されないため、一つずつ覚えてい
きましょう。
今日も文字列を操作する関数の動きを勉強しましょう。
今日使う実例はこちらになります。
空のワークシート”Sheet1″を準備してね!
Sub MOJIRETSU5()
'"Sheet1"シートをアクティブにします
Worksheets("Sheet1").Activate
Range("B2") = Now
Range("C2") = Format(Range("B2"), "yyyymmdd")
Range("C3") = Format(Range("B2"), "aaaa")
Range("C4") = Format(Range("B2"), "ggge年m月")
Range("C5") = Format(Range("B2"), "hh時mm分ss秒")
Range("C6") = Format(Range("B2"), "ww週目")
Range("C7") = Format(Range("B2"), "y日目")
Range("C8") = Format(Range("B2"), "q期目")
Range("C9") = Format(Range("B2"), "ddd")
Range("C10") = Format(Range("B2"), "dddd")
Range("C11") = Format(Range("B2"), "保存ファイル名_yymmdd_hhmmss")
End Sub
実例を動かすとこのような結果になります。
Format関数
Format関数は引数に指定した数値や日付などを、引数(書式記号)を適用した結果を返します。
Format関数の書式は下記となります。
Format(元の値、書式記号)
書式記号 | 表示形式 |
---|---|
# | 1桁の数値を表す |
0 | 1桁の数値を表し、存在しない桁は0で埋める |
, | 桁の区切り記号を表す |
yy | 西暦の下2桁を表す |
yyyy | 4桁の西暦を表す |
m | 月の数値を表す |
mm | 月の数値を表し、1桁の場合は0が付く |
d | 日の数値を表す |
dd | 日の数値を表し、1桁の場合は0が付く |
aaa | 日本語表記の曜日の先頭を1文字で表す |
aaaa | 日本語表記の曜日の先頭を3文字で表す |
ddd | 英語表記の曜日の先頭3文字で表す |
dddd | 英語表記の曜日を表す |
ww | 元の値が、1年のうちで何周目に当たるかを表す |
y | 元の値が、1年のうちで何日目に当たるかを表す |
oooo | 月の名前を日本語で表す |
q | 元の値が、1年のうちで何番目の四半期に当たるか表す |
g | 年号を示すアルファベットを表す |
gg | 年号の先頭1文字を表す |
ggg | 年号を表す |
e | 和暦年を表す |
ee | 和暦年を表し、1桁の場合は0がつく |
h | 時の数値を表す |
hh | 時の数値を表す、1桁の場合は0がつく |
m | 分の数値を表す |
mm | 分の数値を表す、1桁の場合は0がつく |
s | 秒の数値を表す |
ss | 秒の数値を表す、1桁の場合は0がつく |
書式記号で”m”と”mm”は日付を表す”yyyy”や”d”と併用した時に月の数値を表し、”h”や”s”など時刻を表す書式記号と同時に指定した場合は分を表します。
実例を動作させ、1行ずつ具体例をみていきましょう。
6行目のNow関数で、今日の日付を取得し、B2セルに代入しています。
Range("B2") = Now
Now関数詳細はこの記事を参考にしてください。
8行目では、西暦と月と日の数値を取得しています。
Range("C2") = Format(Range("B2"), "yyyymmdd")
9行目では、日本語表記の曜日を取得しています。
Range("C3") = Format(Range("B2"), "aaaa")
10行目では、和暦と月を取得しています。
Range("C4") = Format(Range("B2"), "ggge年m月")
11行目では時、分、秒を取得しています。
Range("C5") = Format(Range("B2"), "hh時mm分ss秒")
12行目では1年のうち何周目かを取得しています。
Range("C6") = Format(Range("B2"), "ww週目")
13行目では、1年のうち何日目かを取得しています。
Range("C7") = Format(Range("B2"), "y日目")
14行目では、1年のうち何期目かを取得しています。
Range("C8") = Format(Range("B2"), "q期目")
15行目では、英語表記の曜日先頭3桁を取得しています。
Range("C9") = Format(Range("B2"), "ddd")
16行目では、英語表記の曜日を取得しています。
Range("C10") = Format(Range("B2"), "dddd")
最後に、18行目ではファイル名の重複を避けるために、秒単位までの日付/時刻情報を取得する例となります。
Range("C11") = Format(Range("B2"), "保存ファイル名_yymmdd_hhmmss")
シリアル値
ここまできてNow関数で取得した単なる日付の情報からなぜ曜日の情報や、1年のうちで何日目かを取得できるか疑問に思う方も多いでしょう。
Excelは日付をシリアル値で管理しています。
図のように、1900年1月1日を1としてそれ以降1日経過する毎に1ずつ増加する連続した数値です。
シリアル値は単なる数値ですが、Excelはそれを調べることでその日付の年月日や曜日を取得できます。
このようにFormat関数はシリアル値から指定した書式記号に応じて変換する関数と言えます。
Format関数まとめ
今日は実例とともにFormat関数の使用方法を学びました。
実務でも、多用しますのでぜひ覚えてください。
コメント