VBA 関数リファレンス B

VBAトップへ
   b VBA 関数リファレンス
   入出力
  ファイル/フォルダ
  文字列操作
  日付・時間 
  データ変換
  データ型の検査


入出力

1.入出力関数


関数名FreeFile
機能ファイル番号の取得
構文FreeFile


intFileNo=FreeFile


関数名Open
機能ファイルを開く
構文Open "ファイル名" For アクセスモード As #ファイル番号


ファイルの読み出し
Sub ReadFile()
    Dim strFileName As String
    Dim intFileNo As Integer
    Dim strData As String
    
    strFileName = "C:\temp\samp.txt"
    intFileNo = FreeFile
    
    Open strFileName For Input As #intFileNo
    
    Do While Not EOF(intFileNo)
        Line Input #intFileNo, strData
        Debug.Print strData
    Loop
    
    Close intFileNo
End Sub

ファイルの書き出し
Sub WriteFile()
    Dim strFileName As String
    Dim intFileNo As Integer
    Dim strData As String
    
    strFileName = "C:\temp\samp.txt"
    intFileNo = FreeFile
    
    Open strFileName For Output As #intFileNo
       
    Print #intFileNo, "aaaaaaa"
       
    Close intFileNo
End Sub

ファイルの追記
Sub AppendFile()
    Dim strFileName As String
    Dim intFileNo As Integer
    Dim strData As String
    
    strFileName = "C:\temp\samp.txt"
    intFileNo = FreeFile
    
    Open strFileName For Append As #intFileNo
       
    Print #intFileNo, "aaaaaaa"
       
    Close intFileNo
End Sub


関数名Close
機能Open ステートメントで開いたファイルへの入出力を終了して、ファイルを閉じる
構文Close "ファイル番号"


Close #1


関数名Line Input
機能シーケンシャル入力モード (Input) で開いたファイルから行全体を読み込み、文字列型 (String) の変数に代入する
構文Line Input #ファイル番号, 変数(String型)


Line Input #1, strData


関数名Print
機能シーケンシャル出力モード (Output または Append) で開いたファイルにデータを書き込む
構文Print #ファイル番号, 文字列等


Print #1, "test"

先頭へ戻る

ファイル/フォルダ

2.ファイル/フォルダ関数


関数名Filecopy
機能ファイルのコピー
構文FileCopy "コピー元ファイル名" , "コピー先ファイル名"


FileCopy "C:\TEMP\samp.txt", "C:\TEMP\bksamp.txt"


関数名kill
機能ファイルの削除
構文kill "ファイル名"


kill "C:\TEMP\samp.txt"


関数名Dir
機能指定したパスからファイル名またはフォルダ名を返します。
構文Dir (パス,ファイル属性(省略可))


Dir "C:\temp\samp.txt"

Dir("C:\temp", vbDirectory)


関数名MkDir
機能フォルダの作成
構文MkDir パス


MkDir C:\TEST


関数名RmDir
機能フォルダの削除
構文RmDir パス


RmDir C:\TEST


先頭へ戻る

文字列操作

3.文字列操作関数


関数名Replace
機能文字列内の特定の単語や語句を、指定された単語や語句に置換します。
構文Replace("対象文字列","置換前の文字(列)","置換後の文字(列)",検索開始位置(省略可),置換回数(省略可),比較モード(省略可))


strSamp = "123456789"
strSamp = Replace(strSamp, "123", "000")
'000456789を返す

strSamp = "111122223333111122223333"
strSamp = Replace(strSamp, "1111", "0000", 5)
'22223333000022223333を返す
        
strSamp = "111122223333111122223333"
strSamp = Replace(strSamp, "1111", "0000", 1, 1)
'000022223333111122223333を返す

strSamp = "111122223333111122223333"
strSamp = Replace(strSamp, "1111", "0000", 1, 2)
'000022223333000022223333を返す


関数名Left
機能文字列の左端から指定した文字数分の文字列を取り出します。
構文Left("文字列",取り出す文字数)


strSamp = "111122223333111122223333"
strSamp = Left(strSamp, 4)
'1111を返す


関数名Right
機能文字列の右端から指定した文字数分の文字列を取り出します。
構文Right("文字列",取り出す文字数)


strSamp = "111122223333111122223333"
strSamp = Right(strSamp, 5)
'23333を返す


関数名Mid
機能文字列内の指定した文字位置から始まる文字列を取り出します。
構文Mid("文字列",開始位置,取り出す文字列数)


strSamp = "111122223333111122223333"
strSamp = Mid(strSamp, 13)
'111122223333を返す
    
strSamp = "111122223333111122223333"
strSamp = Mid(strSamp, 13, 4)
'1111を返す


関数名Len
機能文字列の文字数を返します。
構文Len("文字列")


strSamp = "111122223333111122223333"
intCount = Len(strSamp)
'24を返す


関数名Instr
機能文字列内で特定の文字列を検索し、最初に検出された文字の位置を返します。
構文InStr(検索開始位置(省略可),"検索対象文字列","検索文字列",比較モード)


strSamp = "111122223333111122223333"
intPoint = InStr(strSamp, "3333")
'9を返す

strSamp = "111122223333111122223333"
intPoint = InStr(13, strSamp, "3333")
'21を返す


関数名StrConv
機能文字列を指定の形式に変換する
構文StrConv("対象文字列",定数)



'文字列を大文字に変換
strSamp = "aaaaa"
strSamp = StrConv(strSamp, 1)
'AAAAAを返す

strSamp = "aaaaa"
strSamp = StrConv(strSamp, vbUpperCase)
'AAAAAを返す

'文字列を小文字に変換
strSamp = "AAAAA"
strSamp = StrConv(strSamp, 2)
'aaaaaを返す

'文字列を小文字に変換
strSamp = "AAAAA"
strSamp = StrConv(strSamp, vbLowerCase)
'aaaaaを返す

'文字列の各単語の先頭の文字を大文字に変換
strSamp = "aaaaa"
strSamp = StrConv(strSamp, 3)
'Aaaaaを返す

'文字列の各単語の先頭の文字を大文字に変換
strSamp = "aaaaa"
strSamp = StrConv(strSamp, vbProperCase)
'Aaaaaを返す

'文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換
strSamp = "ハヒフヘホ"
strSamp = StrConv(strSamp, 4)
'ハヒフヘホを返す

'文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換
strSamp = "ハヒフヘホ"
strSamp = StrConv(strSamp, vbWide)
'ハヒフヘホを返す

'文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換
strSamp = "ハヒフヘホ"
strSamp = StrConv(strSamp, 8)
'ハヒフヘホを返す

'文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換
strSamp = "ハヒフヘホ"
strSamp = StrConv(strSamp, vbNarrow)
'ハヒフヘホを返す

'文字列内のひらがなをカタカナに変換
strSamp = "はひふへほ"
strSamp = StrConv(strSamp, 16)
'ハヒフヘホを返す

'文字列内のひらがなをカタカナに変換します。
strSamp = "はひふへほ"
strSamp = StrConv(strSamp, vbKatakana)
'ハヒフヘホを返す

'文字列内のひらがなをカタカナに変換
strSamp = "ハヒフヘホ"
strSamp = StrConv(strSamp, 32)
'はひふへほを返す

'文字列内のひらがなをカタカナに変換
strSamp = "ハヒフヘホ"
strSamp = StrConv(strSamp, vbHiragana)
'はひふへほを返す


関数名Format
機能指定した形式に従って数値、日付/時刻、文字列の表示形式を設定します。
構文Format("数値・日付/時刻・文字列など","形式")


'現在のシステム日付が2005/11/21の場合
dtToday=Date
Debug.Print Format(dtToday,"yyyymmdd")
'20051121を返す

Debug.Print Format(dtToday,"yyyy/mm/dd")
'2005/11/21を返す

Debug.Print Format(dtToday,"gggee年")
'平成17年を返す

Debug.Print Format(dtToday,"gge年")
'平17年を返す

Debug.Print Format(dtToday,"ge")
'H17を返す

Debug.Print Format(dtToday,"yyyy")
'2005を返す

Debug.Print Format(dtToday,"mm")
'11を返す

Debug.Print Format(dtToday,"dd")
'21を返す

'現在のシステム時刻が19:46:38の場合
dtNow=Now
Debug.Print Format(dtNow,"hh:mm:ss")
'19:46:38を返す

Debug.Print Format(dtNow,"hhmmss")
'194638を返す

Debug.Print Format(dtNow,"hh")
'19を返す

Debug.Print Format(dtNow,"HH:mm")
'19:46を返す

Debug.Print Format(dtNow,"ss")
'38を返す

lngData=777777777.7777
Debug.Print Format(lngData,"##,###.##")
'777,777,777.78を返す

Debug.Print Format(lngData,"##,###.00")
'777,777,778.00を返す

Debug.Print Format(lngData,"##,##0")
'777,777,778を返す

Debug.Print Format(lngData,"##,###")
'777,777,778を返す

Debug.Print Format(lngData,"\\###")
'\777777778を返す

lngData=0.7
Debug.Print Format(lngData,"0.00%")
'70.00%を返す

Debug.Print Format(lngData,"00%")
'70%を返す

strData="ABCDE"
Debug.Print Format(strData,"<")
'abcdeを返す

strData="vwxyz"
Debug.Print Format(strData,">")
'VWXYZを返す

先頭へ戻る

日付・時間 

4.日付/時刻操作関数


関数名Date
機能現在のシステム日付を返します。


Debug.Print Date
'システム日付が2005/11/21の場合、2005/11/21を返す


関数名Time
機能現在のシステムの時刻を返します。


Debug.Print Time
'システム時刻が19:46:38の場合、19:46:38を返す


関数名Now
機能現在のシステムの日付と時刻を返します。


Debug.Print Now
'システム日付/時刻が2005/11/21 19:46:38の場合、2005/11/21 19:46:38を返す


関数名Year
機能指定された日時値から年を取り出して返します。
構文Year(Date)


Debug.Print Year(Date)
'現在のシステム日付が2005/11/21の場合2005を返す


関数名Month
機能指定された日時値から月を取り出して返します。
構文Month(Date)


Debug.Print Month(Date)
'現在のシステム日付が2005/11/21の場合11を返す


関数名Day
機能指定された日時値から日を取り出して返します。
構文Day(Date)


Debug.Print Day(Date)
'現在のシステム日付が2005/11/21の場合21を返す


関数名Hour
機能指定された日時から時間の数値を返します。
構文Hour(Time)


Debug.Print Hour(Time)
'システム時刻が19:46:38の場合19を返す


関数名Month
機能指定された日時から分の数値を返します。
構文Minute(time)


Debug.Print Minute(Time)
'システム時刻が19:46:38の場合46を返す


関数名Second
機能指定された日時から秒の数値を返します。
構文Second(Time)


Debug.Print Second(Time)
'システム時刻が19:46:38の場合38を返す


関数名Weekday
機能指定された日付から曜日を計算して、曜日を示す数値を返します。(日〜土=1〜7)
構文Weekday(Date)


Debug.Print Weekday(Date)
'現在のシステム日付が2005/11/21の場合、月曜日なので2を返す


関数名WeekdayName
機能指定された曜日を表す文字列を返します。(1〜7=日曜〜土曜)
構文WeekdayName(1〜7の数値)


Debug.Print WeekdayName(1)
'"日曜"を返す

Debug.Print WeekdayName(Weekday(Date))
現在のシステム日付に対応する曜日を返す


関数名DateAdd
機能指定された時間間隔を加算した日付を返します。
構文DateAdd("時間間隔" , 間隔数 , 時間間隔を追加する日付)


    dtDate = Date
    '3日後を返す(日を加算)
    Debug.Print DateAdd("d", 3, dtDate)
    '3ヵ月後を返す(月を加算)
    Debug.Print DateAdd("m", 3, dtDate)
    '3年後を返す(年を加算)
    Debug.Print DateAdd("yyyy", 3, dtDate)
    '3週目を返す
    Debug.Print DateAdd("w", 3, dtDate)
    '3週間後を返す(週を加算)
    Debug.Print DateAdd("ww", 3, dtDate)
    '9ヵ月後を返す(四半期を加算)
    Debug.Print DateAdd("q", 3, dtDate)
    
    dtTime = Time
    '3時間後を返す(時間を加算)
    Debug.Print DateAdd("h", 3, dtTime)
    '3分後を返す(分を加算)
    Debug.Print DateAdd("n", 3, dtTime)
    '3秒後を返す(秒を加算)
    Debug.Print DateAdd("s", 3, dtTime)
    
    dtNow = Now
    '3日後を返す(日を加算)
    Debug.Print DateAdd("d", 3, dtNow)
    '3ヶ月後を返す(月を加算)
    Debug.Print DateAdd("m", 3, dtNow)
    '3週目を返す
    Debug.Print DateAdd("w", 3, dtNow)
    '3週間後を返す(週を加算)
    Debug.Print DateAdd("ww", 3, dtNow)
    '3時間後を返す(時間を加算)
    Debug.Print DateAdd("h", 3, dtNow)
    '3分後を返す(分を加算)
    Debug.Print DateAdd("n", 3, dtNow)
    '3秒後を返す(秒を加算)
    Debug.Print DateAdd("s", 3, dtNow)


関数名DateDiff
機能2 つの指定した日付の時間間隔を返します。
構文DateDiff("時間間隔" , "開始日付" , "終了日付")


    dtStDate = "2005/11/22"
    dtEdDate = "2006/2/22"

    '92を返す(日間隔)
    Debug.Print DateDiff("d", dtStDate, dtEdDate)
    '3を返す(月間隔)
    Debug.Print DateDiff("m", dtStDate, dtEdDate)
    '1を返す(年間隔)
    Debug.Print DateDiff("yyyy", dtStDate, dtEdDate)
    '13を返す(週間隔)
    Debug.Print DateDiff("w", dtStDate, dtEdDate)
    '13を返す(週間隔)
    Debug.Print DateDiff("ww", dtStDate, dtEdDate)
    '1を返す(四半期間隔)
    Debug.Print DateDiff("q", dtStDate, dtEdDate)
    '2208を返す(時間間隔)
    Debug.Print DateDiff("h", dtStDate, dtEdDate)
    '132480を返す(分間隔)
    Debug.Print DateDiff("n", dtStDate, dtEdDate)
    '7948800を返す(秒間隔)
    Debug.Print DateDiff("s", dtStDate, dtEdDate)

先頭へ戻る

   

データ変換

5.データ型変換


関数戻り値引数の範囲
CInt 整数型 (Integer) -32,768 〜 32,767。小数部分は丸められます。
CLng 長整数型 (Long) -2,147,483,648 〜 2,147,483,647。小数部分は丸められます。
CSng 単精度浮動小数点数型 (Single) -3.402823E38 〜 -1.401298E-45 (負の値)、および 1.401298E-45 〜 3.402823E38 (正の値)。
CVar バリアント型 (Variant) 数値の場合は倍精度浮動小数点数型の範囲と同じ。数値以外の場合は、文字列型の範囲と同じ。
CStr 文字列型 (String) CStr 関数の戻り値は引数 expression により異なります。
CBoolブール型 (Boolean) 任意の有効な文字列または数式
CByteバイト型 (Byte) 0 〜 255
CCur通貨型 (Currency) -922,337,203,685,477.5808 〜 922,337,203,685,477.5807
CDate日付型 (Date) 任意の有効な日付式
CDbl倍精度浮動小数点数型 (Double) -1.79769313486231E308 〜 -4.94065645841247E-324 (負の値)。 4.94065645841247E-324 〜 1.79769313486232E308 (正の値)。
CDec 10 進型 (Decimal)小数点以下が 0 桁 (小数部分を持たない数値) の場合、-79,228,162,514,264,337,593,543,950,335 〜 79,228,162,514,264,337,593,543,950,335。 小数点以下 28 桁の数値の場合、-7.9228162514264337593543950335 〜 7.9228162514264337593543950335。絶対値の最小値は 0 を除いた場合、0.0000000000000000000000000001 です。

先頭へ戻る

   

データ型の検査

6.データ型の検査


関数戻り値引数の範囲
CInt 整数型 (Integer) -32,768 〜 32,767。小数部分は丸められます。
CLng 長整数型 (Long) -2,147,483,648 〜 2,147,483,647。小数部分は丸められます。
CSng 単精度浮動小数点数型 (Single) -3.402823E38 〜 -1.401298E-45 (負の値)、および 1.401298E-45 〜 3.402823E38 (正の値)。
CVar バリアント型 (Variant) 数値の場合は倍精度浮動小数点数型の範囲と同じ。数値以外の場合は、文字列型の範囲と同じ。
CStr 文字列型 (String) CStr 関数の戻り値は引数 expression により異なります。
CBoolブール型 (Boolean) 任意の有効な文字列または数式
CByteバイト型 (Byte) 0 〜 255
CCur通貨型 (Currency) -922,337,203,685,477.5808 〜 922,337,203,685,477.5807
CDate日付型 (Date) 任意の有効な日付式
CDbl倍精度浮動小数点数型 (Double) -1.79769313486231E308 〜 -4.94065645841247E-324 (負の値)。 4.94065645841247E-324 〜 1.79769313486232E308 (正の値)。
CDec 10 進型 (Decimal)小数点以下が 0 桁 (小数部分を持たない数値) の場合、-79,228,162,514,264,337,593,543,950,335 〜 79,228,162,514,264,337,593,543,950,335。 小数点以下 28 桁の数値の場合、-7.9228162514264337593543950335 〜 7.9228162514264337593543950335。絶対値の最小値は 0 を除いた場合、0.0000000000000000000000000001 です。

   先頭へ戻る   

中級・特別編トップへ