前回までは分類や課題に対して関数やコードの内容を説明してきましたが、説明に含めなかった関数やコードがありましたので、今回の記事で補足したいと思います。
'配列の宣言
Dim arr1(3) As Integer
Dim arr2(5) As Integer
Dim arr3(11) As Integer
'UBound関数の戻り値の表示
Dim str As String
str = UBound(arr1) & vbCrLf & UBound(arr2) & vbCrLf & UBound(arr3)
MsgBox str, vbInformation
UBound関数は配列の中にインデックスの最大値を出すことができます。
'配列の宣言
Dim arr(3, 5, 11) As Integer
'UBound関数の戻り値の表示
Dim str As String
str = UBound(arr, 1) & vbCrLf & UBound(arr, 2) & vbCrLf & UBound(arr, 3)
MsgBox str, vbInformation
配列の中に配列を複数置いた場合においても上記のコードで、それぞれ配列のインデックスの最大値を取り出すことができます。
'配列の宣言
Dim arr1(1 To 3) As Integer
Dim arr2(3 To 5) As Integer
Dim arr3(5 To 11) As Integer
'LBound関数の戻り値の表示
Dim str As String
str = LBound(arr1) & vbCrLf & LBound(arr2) & vbCrLf & LBound(arr3)
MsgBox str, vbInformation
上記のようにLBoundはインデックスの最小値を取り出すことができます。これもUBoundと同様に多次元配列においても使用することができます。
Dim FSO As Object
Dim Tgt As String
'FileSystemObjectオブジェクトを生成
Set FSO = CreateObject("Scripting.FileSystemObject")
'存在を調べたいファイル名をフルパスで指定し変数に代入
Tgt = "D:\デスクトップ\Sample\Sample1.xlsx"
If FSO.FileExists(Tgt) Then
'ファイルが存在する場合の処理
MsgBox Tgt & "が見つかりましたので、ファイルを開きます"
Workbooks.Open Tgt
Else
'ファイルが存在しない場合の処理
MsgBox "ファイルが存在しません", vbCritical
End If
FileExists関数はファイルのパスを指定して見つかった場合にTrueを返す関数になります。上記のようにFSOと組み合わせることで検索して見つかった場合に開くといったこともできます。
'vbCrLfで改行
a = "aaa" & vbCrLf & "bbb"
'セルに入力
ActiveSheet.Cells(1, 1) = a
上記のコードでaaaとbbbが2行になって表示されたかと思います。他にも下記のようなコードで改行が行えます。vbCrLfを使えばエクセルのセル内、メッセージボックス、メモ帳など多くの場面で使用できます。(vbLfなど他にも使用できる関数は有りますがvbCrLfで基本代用ができます。媒体によって改行したくない場合にはvbLfやCrLfなど他の関数を使ってみてください)
Dim str As String
str = " Hello VBA! "
MsgBox str & "(LTrim前)" & vbCrLf & _
LTrim(str) & "(LTrim後)" & vbCrLf & _
RTrim(str) & "(RTrim後)"
Trim関数は文字列に空白が存在する場合にそれを取り除くことができます。RTrimで文字列の最初のスペース、LTrimで文字列の最後のスペースを取り除くことができます。
'00000を表示する
Debug.Print "00000" + intnum
Debug.Print Right("00000" & intnum, 5)
Debug.Print "00000" & intnum
Debug.Printはイミディエイトウィンドウに表示する際に使用する関数です。イミディエイトウィンドウとはアプリをデバックした際に確認できるウィンドウだと思ってい下さい。
いかがでしたか?こんな感じで今後も説明していない関数を補足として記事にしていこうと思います。