HELPの小技集1




関数編

バリアント(文字列)型として定義された変数を配列化するには(Array関数

Sub 配列()
Dim MyWeek, MyDay
MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
' 返される配列の添字の下限は、Option Base ステートメントにより、
' 1 に設定されているものとします。
MyDay = MyWeek(1) ' MyDay に "Tue" が格納されます。
MsgBox MyDay
MyDay = MyWeek(3) ' MyDay に "Thu" が格納されます。
MsgBox MyDay
End Sub

構文

Array(arglist)

引数 arglist は、必ず指定します。引数 arglist には、値のリストをカンマ (,) で区切って指定します。指定した値は、バリアント型 (Variant) に格納されている配列の要素に代入されます。引数 arglist を指定しない場合は、長さ 0 の配列が作成されます。

解説

配列の要素を参照するには、変数名の後にかっこを付け、かっこの中に参照する要素のインデックス番号を指定します。


バリアント型に対してのみ有効で、他の変数型には適用できません。配列として宣言していないバリアント型 (Variant) に、配列を格納することができます。

Array 関数を使用して作成した配列のインデックスの最小値は、常に 0 です。ほかの種類の配列とは異なり、Option Base ステートメントに最小値を指定しても影響を受けません。





★数値に応じて選択肢の値を返すには(Choose関数

Sub CHOOSE関数()
MsgBox GetChoice(2)
End Sub

Function GetChoice(Ind As Integer)
GetChoice = Choose(Ind, "Speedy", "United", "Federal")
End Function
Sub じゃんけん()
Dim a As Integer
Randomize
a = Int((3 - 1 + 1) * Rnd + 1)
MsgBox Choose(a, "グー", "チョキ", "パー")
End Sub

引数のリストから値を選択して返します。

構文

Choose(index, choice-1[, choice-2, ... [, choice-n]])

Choose 関数の構文は、次の指定項目から構成されます。

指定項目 内容
index 必ず指定します。1 から利用可能な選択肢の数までの範囲内の値を返す数式またはフィールドを指定します。
choice 必ず指定します。選択肢のいずれかを格納するバリアント型 (Variant) の式を指定します。

解説

Choose 関数は、引数 index の値に基づいて選択肢のリストから値を返します。引数 index が 1 の場合は、Choose 関数はリストに含まれる最初の選択肢を返し、引数 index が 2 の場合は、2 番目の選択肢を返します。以下同様に続きます。

Choose 関数を使うと、選択可能な値のリストから特定の値を検索することができます。たとえば、choice-1 = "one"、choice-2 = "two"、choice-3 = "three" である場合に引数 index に指定した式が 3 を返すと、Choose 関数は "three" を返します。この機能は、引数 index がオプション グループの値を表す場合に特に便利です。

引数 index が 1 未満の場合や、リストに含まれる選択肢の数を超える場合は、Choose 関数の戻り値は Null 値 になります。

引数 index が整数でない場合は、最も近い整数に丸められてから評価されます。





★現在のパスを調べるには(CurDir関数)

Sub カレントパス()
' C ドライブの現在のパスは、"C:\WINDOWS\SYSTEM" であると仮定します。 (Microsoft Windows の場合).
' D ドライブの現在のパスは、"D:\EXCEL" であると仮定します。
' 現在のドライブは、C ドライブであると仮定します。
Dim MyPath
MyPath = CurDir ' "C:\WINDOWS\SYSTEM" を返します。
MsgBox MyPath
MyPath = CurDir("C") ' "C:\WINDOWS\SYSTEM" を返します。
MsgBox MyPath
MyPath = CurDir("D") ' "D:\EXCEL" を返します。
MsgBox MyPath

End Sub


指定したドライブの現在のパスを表すバリアント型 (内部処理形式 String の Variant) の値を返します。

構文

CurDir[(drive)]

引数 drive は省略可能です。引数 drive には、ドライブを示す文字列式を指定します。引数 drive を省略した場合、または長さ 0 の文字列 (" ") を指定した場合は、現在のドライブのパスを返します。Macintosh で CurDir を使用した場合、引数 drive 指定した値は無視され、現在のドライブのパスが返されます。




★現在のシステムの日付を取得するには(Date関数

Sub 現在の日付()
Dim MyDate
MyDate = Date ' MyDate に現在のシステムの日付が格納されます。
MsgBox MyDate
End Sub




★ある日から何日後を取得するには(DateAdd関数

Sub 日付加算()
Dim FirstDate As Date ' 変数を宣言します。
Dim IntervalType As String
Dim Number As Integer
Dim Msg
IntervalType = "m" ' "m" によって追加する時間間隔として、月を指定します。
FirstDate = InputBox("日付を入力してください。")
Number = InputBox("加算する月数を入力してください。")
Msg = "新しい日付: " & DateAdd(IntervalType, Number, FirstDate)
MsgBox Msg
End Sub

2000・9・13より6ヵ月後

指定された時間間隔を加算した日付をバリアント型 (内部処理形式 String の Variant) の値で返します。

構文

DateAdd(interval, number, date)

DateAdd 関数の構文は、次の名前付き引数から構成されます。

指定項目 内容
interval 必ず指定します。追加する時間間隔を表す文字列式を指定します。
number 必ず指定します。追加する時間間隔の数を表す数式を指定します。将来の日時を取得するには正の数を指定します。過去の日時を取得するには負の数を指定します。
date 必ず指定します。時間間隔を追加する日付を表すバリアント型 (内部処理形式 Date の Variant) の値またはリテラル文字列を指定します。

設定値

名前付き引数 interval の設定値は次のとおりです。

設定値 内容
yyyy yyyy
q 四半期
m
y 年間通算日
d
w 週日
ww
h
n
s

解説

DateAdd 関数を使うと、ある日付に対して指定した時間間隔を、加えたり引いたりすることができます。たとえば、現在から 30 日後の日付や、現在から 45 分後の時刻などを計算できます。

名前付き引数 date に日数を加えるには、年間通算日 ("y")、日 ("d")、週日 ("w") のいずれかを指定します。

DateAdd 関数が無効な日付を返すことはありません。次の例では、31-Jan-95 の日付に 1 か月を加えています。

DateAdd("m", 1, "31-Jan-95")

この場合、31-Feb-95 ではなく、28-Feb-95 が返されます。名前付き引数 date が 31-Jan-96 であれば、1996 年は閏年なので 29-Feb-96 が返されます。

計算の結果、日付が西暦 100 年以前になる場合 (名前付き引数 date に指定した年よりも大きな年を引いた場合) は、エラーが発生します。

名前付き引数 number に指定した値が長整数型 (Long) でない場合は、最も近い整数値に丸められてから評価されます。





★2 つの指定した日付の時間間隔を取得するには(DateDiff関数

Sub 日数調べ()
Dim TheDate As Date ' 変数を宣言します。
Dim Msg
TheDate = InputBox("日付を入力してください。")
Msg = "今日からの日数: " & DateDiff("d", Now, TheDate)
MsgBox Msg
End Sub

2 つの指定した日付の時間間隔を表すバリアント型 (内部処理形式 Date の Variant) の値を指定します。

構文

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

DateDiff 関数の構文は、次の名前付き引数で構成されます。

指定項目 内容
interval 必ず指定します。名前付き引数 date1date2 の間隔を計算するための、時間単位を表す文字列式を指定します。
date1, date2 必ず指定します。この名前付き引数はバリアント型 (内部処理形式 Date の Variant) のデータ形式で指定します。間隔を計算する 2 つの日付を指定します。
firstdayofweek 省略可能です。週の始まりの曜日を表す定数を指定します。省略すると、日曜日を指定したものとみなされます。
firstweekofyear 省略可能です。年度の第 1 週を表す定数を指定します。省略すると、1 月 1 日を含む週が第 1 週とみなされます。

設定値

名前付き引数 interval の設定値は次のとおりです。

設定値 内容
yyyy
q 四半期
m
y 年間通算日
d
w 週日
ww
h
n
s

名前付き引数 firstdayofweek の設定値は次のとおりです。

定数 内容
vbUseSystem 0 NLS API の設定値を使います。
vbSunday 1 (既定値) 日曜
vbMonday 2 月曜
vbTuesday 3 火曜
vbWednesday 4 水曜
vbThursday 5 木曜
vbFriday 6 金曜
vbSaturday 7 土曜

名前付き引数 firstweekofyear の設定値は次のとおりです。

定数 内容
vbUseSystem 0 NLS API の設定値を使います。
vbFirstJan1 1 (既定値) 1 月 1 日を含む週を年度の第 1 週として扱います。
vbFirstFourDays 2 7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週として扱います。
vbFirstFullWeek 3 全体が新年度に含まれる最初の週を年度の第 1 週として扱います。

解説

DateDiff 関数を使うと、指定した時間単位で 2 つの日付の時間間隔を調べることができます。たとえば、2 つの日付の間の日数や、現在から年末までの週の数などを求めることができます。

名前付き引数 date1date2 の間の日数を求めるには、年間通算日 ("y") か、日 ("d") のいずれかを指定します。名前付き引数 interval に週日 ("w") を指定すると、2 つの日付の間の週の数が計算されます。名前付き引数 date1 が月曜日の場合は、名前付き引数 date2 までの間の月曜日の数が返されます。このとき名前付き引数 date2 の月曜日は計算に入りますが、名前付き引数 date1 の月曜日は計算に入りません。一方、名前付き引数 interval に週 ("ww") を指定した場合は、2 つの日付の間の暦上の週の数が計算されます。つまり、名前付き引数 date1date2 の間の日曜日の数が返されます。名前付き引数 date2 に指定した日付が日曜日であれば、名前付き引数 date2 は計算に入りますが、名前付き引数 date1 は日曜日であっても計算に入りません。

名前付き引数 date2 よりも時間的に後の日付を名前付き引数 date1 に指定すると、DateDiff 関数は負の数を返します。

名前付き引数 firstdayofweek は、名前付き引数 interval に週 ("ww") を指定した場合の計算値に影響します。

名前付き引数 date1 または date2 に日付リテラルを指定した場合、指定した年が日付の固定部分となります。ただし、名前付き引数 date1 または date2 をダブル クォーテーション (" ") で囲み、年を省略すると、名前付き引数 date1 または date2 の式が評価されるたびにコードに現在の年が挿入されます。これを利用すると、異なる年度で使用できるコードを記述することが可能になります。

12 月 31 日とその次の年の 1 月 1 日を比較すると、DateDiff 関数の年 ("yyyy") は、1 日後であっても、1 を返します。





引数に指定した年、月、日を Date形式にするには(DateSerial関数

Sub 日()
Dim MyDate
' MyDate には、1969 年 2 月 12 日の日付が代入されます。
MyDate = DateSerial(1969, 2, 12) ' 日付を返します。
MsgBox MyDate
End Sub




★文字列を日付に変換するには(DateValue関数

Sub 日付に変換()
'DateValue 関数の使用例
'次の例は、DateValue 関数を使って、文字列を日付に変換します。日付リテラルを使って、バリアント型 (Variant) や日付型 (Date) の変数に日付を直接代入することもできます (たとえば MyDate = #02/12/69#)。

Dim MyDate
MyDate = DateValue("February 12, 1969") ' 日付を返します。
MsgBox MyDate
End Sub


解説

引数 date が有効な日付の区切り文字によって区切られた数字だけが含まれる場合、DateValue 関数はコントロール パネルで設定した短い日付の書式に従って、年、月、および日の順序を認識します。
また DateValue 関数は、日付に月の名前がそのまま記述してあっても、また省略した形式であっても認識します。たとえば、"1991/12/30" や "91/12/30" だけでなく、"平成 3 年 12 月 30 日"、"H3 - 12 - 30" などの形式で指定することもできます。





★日付の中で日だけ取得するには(Day関数

Sub 日だけ取得()
'Day 関数の使用例
'次の例は、Day 関数を使って、指定された日付の "日" で表される部分を取得します。開発環境時には、日付リテラルはコード記述時の国別情報で設定されている短い日付の形式で表示されます。

Dim MyDate, MyDay
MyDate = #2/12/1969# ' 日付を代入します。
MyDay = Day(MyDate) ' MyDay には、12 が代入されます。
MsgBox MyDay
End Sub

引数 MyDate が有効な値を含まない場合は、Null 値を返します。


月の何日かを表す 1〜31 の範囲の整数を表すバリアント型 (内部処理形式 Integer の Variant) の値を返します。





★減価償却費の計算(DDB関数

Sub 減価償却()
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr
Const YRMOS = 12 ' 1 年の月数を設定します。
Fmt = "###,##0.00"
InitCost = InputBox("資産購入時の価格を入力してください。")
SalvageVal = InputBox("耐用年数を経た後での資産の価格を入力してください。")
MonthLife = InputBox("資産の耐用期間を月数で入力してください。")
Do While MonthLife < YRMOS ' 期間が 1 年以上かどうかを確認します。
MsgBox "耐用期間は 1 年以上です。"
MonthLife = InputBox("資産の耐用期間を月数で入力してください。")
Loop
LifeTime = MonthLife / YRMOS ' 月数を年数に変換します。
If LifeTime <> Int(MonthLife / YRMOS) Then
LifeTime = Int(LifeTime + 1) ' 近似の年に切り上げます。
End If
DepYear = CInt(InputBox("減価償却費を計算する年を入力してください。"))
Do While DepYear < 1 Or DepYear > LifeTime
MsgBox "1 から" & LifeTime & "の範囲の数値を入力してください。"
DepYear = InputBox("減価償却費を計算する年を入力してください。")
Loop
Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)
MsgBox DepYear & " 年目の減価償却費は " & Format(Depr, Fmt) & " です。"
End Sub
これまでに出てきていない関数等については、追々説明していきます。




★C内のフォルダを検索するには(Dir関数

Sub C内のホルダ検索()
' C:\ 内のフォルダの名前を表示します。
MyPath = "c:\" ' パスを設定します。
MyName = Dir(MyPath, vbDirectory) ' 最初のフォルダ名を返します。
Do While MyName <> "" ' ループを開始します。
' 現在のフォルダと親フォルダは無視します。
If MyName <> "." And MyName <> ".." Then
' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' フォルダであれば、それを表示します。イミディエイトウインドウに。
End If
End If
MyName = Dir ' 次のフォルダ名を返します。
Loop
End Sub




Chr()関数、()内の数字はどれに対応しているのか調べてみよう

Sub CHR関数調べ()
Dim i As Integer
Do While i <= 255
On Error Resume Next


Range("A" & i) = Chr(i)
i = i + 1
Loop

'下記は参考です。
'MyChar = Chr(65) ' A を返します。
'MyChar = Chr(97) ' a を返します。
'MyChar = Chr(62) ' > を返します。
'MyChar = Chr(37) ' % を返します。

End Sub
A列に表示されます。

Chr(9)タブ

Chr(10)ライン フィード文字

Chr(13)キャリッジ リターンについては、ここをクリック


指定した文字コードに対応する文字を示す文字列型 (String) の値を返します。




★エラー番号のメッセージを確認してみましょう(Error関数

Sub エラー関数()
'Error 関数の使用例
'次の例は、Error 関数を使って、エラー番号に対応したエラー メッセージをB列に出力します。

Dim i As Integer
Do While i <= 700
On Error Resume Next
Range("B" & i) = Error(i)
i = i + 1
Loop

End Sub

Error関数は、指定したエラー番号に対応するエラー メッセージを返します。




★ファイルの日付を取得するには(FileDateTime関数

Sub ファイルデイト表示()
'FileDateTime 関数の使用例
'次の例は、FileDateTime 関数を使って、ファイルが作成または最後に変更された日付と時刻を求めます。表示される日付と時刻の形式は、国別情報の設定によって異なります。

Dim MyStamp
' TESTFILE が最後に更新された日付を返します。
' 国別情報には、"日本/日本語" が設定されているものと仮定します。
MyStamp = FileDateTime("c:\Testfile")
MsgBox MyStamp

End Sub



★ファイルのサイズを調べるには(FileLen関数

Sub FILELEN関数()
'FILELEN 関数の使用例
'次の例は、FileLen 関数を使って、ファイルの長さをバイト単位で求めます。この例の、TESTFILE には、データが含まれているものと仮定します。

Dim MySize
MySize = FILELEN("C:\Testfile\testfile.txt") ' ファイルの長さをバイト数で返します。
MsgBox MySize

End Sub





★式をいろいろなフォーマットに変換するには(Format関数

Sub フォーマット()
Dim MyTime, MyDate, MyStr
MyTime = #5:04:23 PM#
MyDate = #1/27/1993#

' システムで定義されている時刻の長い形式を使って、システムの現在の時刻を返します。
MyStr = Format(Time, "Long Time")
MsgBox MyStr
' システムで定義されている日付の長い形式を使って、システムの現在の日付を返します。
MyStr = Format(Date, "Long Date")
MsgBox MyStr
MyStr = Format(MyTime, "h:m:s") ' "17:4:23" を返します。
MsgBox MyStr

MyStr = Format(MyTime, "hh:mm:ss AMPM") ' "05:04:23 PM" を返します。
MsgBox MyStr
MyStr = Format(MyDate, "dddd, mmm d yyyy") ' "Wednesday,Jan 27 1993" を返します。mmmをmmmmにすると、JanがJanuaryになります。
MsgBox MyStr
' 書式を指定しない場合は文字列を返します。
MyStr = Format(23) ' "23" を返します。
MsgBox MyStr
' ユーザー定義の書式。
MyStr = Format(5459.4, "##,##0.00") ' "5,459.40" を返します。
MsgBox MyStr
MyStr = Format(334.9, "###0.00") ' "334.90" を返します。
MsgBox MyStr
MyStr = Format(5, "0.00%") ' "500.00%" を返します。
MsgBox MyStr
MyStr = Format("HELLO", "<") ' "hello" を返します。
MsgBox MyStr
MyStr = Format("This is it", ">") ' "THIS IS IT" を返します。
MsgBox MyStr

End Sub












式を指定した書式に変換し、その文字列を示すバリアント型 (内部処理形式 String の Variant) の値を返します。

構文

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

Format 関数の構文は、次の指定項目から構成されます。

指定項目 内容
expression 必ず指定します。任意の式を指定します。引数 expression に指定したデータは、引数 format の書式に従って変換されます。
format 省略可能です。定義済み書式または表示書式指定文字を指定します。
firstdayofweek 省略可能です。週の 1 日目を指定する定数を指定します。
firstweekofyear 省略可能です。年の第 1 週を指定する定数を指定します。

設定値

引数 firstdayofweek には、次の定数を指定します。

定数 内容
vbUseSystem 0 NLS API の設定値を使用します。
vbSunday 1 (既定値) 日曜
vbMonday 2 月曜
vbTuesday 3 火曜
vbWednesday 4 水曜
vbThursday 5 木曜
vbFriday 6 金曜
vbSaturday 7 土曜

引数 firstweekofyear には、次の定数を指定します。

定数 内容
vbUseSystem 0 NLS API の設定値を使用します。
vbFirstJan1 1 (既定値) 1 月 1 日を含む週から始まります。
vbFirstFourDays 2 年の 4 日以上が含まれる最初の週から始まります。
vbFirstFullWeek 3 年のうち、7 日が含まれる最初の週から始まります。

解説

対象形式 書式の設定方法
数値 定義済み数値書式、または数値表示書式指定文字を使用します。
日付と時刻 定義済み日付/時刻書式、または日付/時刻表示書式指定文字を使用します。
日付と時刻のシリアル値 日付や時刻の形式または数値形式を使用します。
文字列 文字列表示書式指定文字を使用します。

引数 format を省略して数値に書式を設定しようとすると、Format 関数は Str 関数を呼び出した場合と同様の結果を返します。Format 関数の返す値は国別情報に対応しています。ただし、Str 関数を使用して正の数値を文字列に変換した場合、符号用のスペースが先頭に付加されますが、Format 関数を使用した場合、このスペースは付加されません。

ローカライズされていない数値文字列を書式設定する場合、目的の書式設定を確実に行うことができるように数値表示書式指定文字を使用するようにしてください。

メモ Calendar プロパティの設定がグレゴリオ暦の場合で、引数 format で日付書式を使用するように指定した場合、引数 expression にはグレゴリオ暦で表される日付を指定する必要があります。Calendar プロパティの設定が回教暦の場合で、引数 format で日付書式を使用するように指定した場合、引数 expression には回教暦で表される日付を指定する必要があります。

Calendar プロパティの設定がグレゴリオ暦の場合、引数 format で指定する表示書式指定文字は、通常の場合と同じ意味になります。Calendar プロパティの設定が回教暦の場合、引数 format で指定する表示書式指定文字 (たとえば、ddddmmmmyyyy) は、グレゴリオ暦の場合と同じ意味になりますが、設定される対象は回教暦のカレンダーになります。また、表示書式指定文字自体は英語のままとなりますが、表示結果は表示書式指定文字に応じて適切なアラビア語が使用されます。さらに、表示書式指定文字で表される値の範囲が、次の表に示すようにグレゴリオ暦の場合と比べて変わる場合があります。

表示書式指定文字 値の範囲
d 1 〜 30
dd 1 〜 30
ww 1 〜 51
mmm 完全な月の名前を表示します。回教暦の月の名前には、省略形式がありません。
y 1 〜 355
y 100 〜 9666

グレゴリオ暦
ローマ教皇,グレゴリウス13世が,1582年にユリウス暦を改定した暦。改暦に際して日付を10日とばしてユリウス暦の1582年10月4日の翌日をグレゴリオ暦の10月15日とした。また,うるう年の置き方を次のように改めた。

年数が4の倍数の年をうるう年とする。ただし,100の倍数の年で400の倍数でない年は,平年とする

したがって,1600年や2000年はうるう年だが,1700年,1800年,1900年,2100年などは平年となる。うるう年は400年に97回で,1年の平均日数は365.2425日。
新教や東方正教会の国では改暦が遅れ,デンマーク,オランダ,ドイツでは1700年,イギリスでは1752年,ソ連では1918年,ギリシャでは1924年に改暦が行われた。日本は1873年に太陰太陽暦の天保暦からグレゴリオ暦に改暦した。

回教暦=西暦 - 621




★時刻の「時」であらわされる部分を取得するには(Hour関数

Sub 時間()
'Hour 関数の使用例
'次の例は、Hour 関数を使って、指定された時刻の "時" で表される部分を取得します。開発環境時には、時刻リテラルはコード記述時の国別情報で設定されている短い時刻の形式で表示されます。

Dim MyTime, MyHour
MyTime = #4:35:17 PM# ' 時刻を代入します。
MyHour = Hour(MyTime) ' MyHour には、16 が代入されます。
MsgBox MyHour

End Sub

1 日の時刻を表す 0〜23 の範囲の整数を表すバリアント型 (内部処理形式 Integer の Variant) の値を返します。

Syntax

Hour(time)

引数 time は必ず指定します。引数 time には、時刻を表す任意のバリアント型 (Variant) の値、数式、文字列式、またはこれらを組み合わせた値を指定します。引数 time が有効な値を含まない場合は、Null 値を返します。




★式の評価結果によって、2 つの引数のうち 1 つを返すには(IIf関数

Sub IIF関数()
MsgBox CheckIt(10000)
End Sub


Function CheckIt(TestMe As Integer)
CheckIt = IIF(TestMe > 1000, "Large", "Small")
End Function


式の評価結果によって、2 つの引数のうち 1 つを返します。

構文

IIf(expr, truepart, falsepart)

IIf 関数の構文は、次の名前付き引数から構成されます。

指定項目 内容
expr 必ず指定します。評価対象の式を指定します。
truepart 必ず指定します。名前付き引数 expr真 (True) の場合に返す値または式を指定します。
falsepart 必ず指定します。名前付き引数 expr偽 (False) の場合に返す値または式を指定します。

解説

IIf 関数では、名前付き引数 truepart または名前付き引数 falsepart のいずれか一方だけが返されますが、評価は両方の引数に対して行われます。このため、IIf 関数を使うと、予期しない結果が起きることがあります。たとえば、名前付き引数 falsepart を評価した結果 0 による除算エラーが発生する場合は、名前付き引数 expr真 (True) であってもエラーが発生します。





★文字列から文字を見つけるには(InstrRev関数

Sub 文字を見つける()

Dim SearchString, SearchChar, MyPos
SearchString = "abbabababcc" ' 検索対象の文字列を定義します。
SearchChar = "a" ' "a" を検索します。

MyPos = InStrRev(SearchString, SearchChar)
MsgBox MyPos

MyPos = InStrRev(SearchString, SearchChar, 4)
MsgBox MyPos

MyPos = InStrRev(SearchString, SearchChar, 7)
MsgBox MyPos
MyPos = InStrRev(SearchString, "W") ' 0 を返します。
MsgBox MyPos





機能

ある文字列 (string1) の中から指定された文字列 (string2) を最後の文字位置から検索を開始し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。




★指定した数値の整数部分を返すには(Int 関数と Fix 関数

Sub INT関数とFIX関数の違い()
Dim MyNumber
MyNumber = Int(99.8) ' 99 を返します。
MyNumber = Fix(99.2) ' 99 を返します。

MyNumber = Int(-99.8) ' -100 を返します。
MyNumber = Fix(-99.8) ' -99 を返します。

MyNumber = Int(-99.2) ' -100 を返します。
MyNumber = Fix(-99.2) ' -99 を返します。

End Sub

上記の例は、Int 関数と Fix 関数を使って、数値の整数部を求めます。Int 関数は、引数として負の数を指定すると、その数値以下の負の整数値の中で最大の値を返します。Fix 関数は、引数として負の数を指定すると、その数値以上の整数値の中で最小の値を返します。違いがあることに注意してください。



★変数が配列かどうかを調べるには(IsArray関数

Sub ISARRAY関数()
'IsArray 関数の使用例
'次の例は、IsArray 関数を使って、変数が配列変数かどうかを調べます。

Dim MyArray(1 To 5) As Integer, YourArray, MyCheck ' 配列変数を宣言します。
YourArray = Array(1, 2, 3) ' Array 関数を使用します。
MyCheck = IsArray(MyArray) ' True を返します。
MsgBox MyCheck
MyCheck = IsArray(YourArray) ' True を返します。
MsgBox MyCheck

End Sub


変数が配列であるかどうかを調べ、結果をブール型 (Boolean) で返します。

構文

IsArray(varname)

引数 varname は必ず指定します。引数 varname には、変数の識別子を指定します。

解説

IsArray 関数は、指定した変数が配列の場合は、真 (True) を返します。それ以外の場合は、偽 (False) を返します。IsArray 関数は、特に配列を含むバリアント型 (Variant) の式 に有効です。




★数式が日付に変換できるかどうかを調べるには(IsDate関数

Sub ISDATE関数()
'IsDate 関数の使用例
'次の例は、IsDate 関数を使って、数式が日付に変換できるかどうかを調べます。

Dim MyDate, YourDate, NoDate, MyCheck
MyDate = "1969,2,12": YourDate = #2/12/1969#: NoDate = "こんにちは"
MyCheck = IsDate(MyDate) ' True を返します。
MsgBox MyCheck
MyCheck = IsDate(YourDate) ' True を返します。
MsgBox MyCheck
MyCheck = IsDate(NoDate) ' False を返します。
MsgBox MyCheck

End Sub




式を日付に変換できるかどうかを調べ、結果をブール型 (Boolean) で返します。

構文

IsDate(expression)

引数 expression は必ず指定します。引数 expression には、日付や時刻として認識できる日付式または文字列式を含むバリアント型 (Variant) の式を指定します。

解説

IsDate 関数は、指定した式が日付である場合、またはその式が有効な日付として認識できる場合は、真 (True) を返します。変換できない場合は、偽 (False) を返します。Microsoft Windows で有効な日付の範囲は、西暦 100 年 1 月 1 日から西暦 9999 年 12 月 31 日までです。この範囲は、オペレーティング システムによって異なります。





     小技集2へ