0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VBAの基本操作(補足1)

Posted at

前回までは分類や課題に対して関数やコードの内容を説明してきましたが、説明に含めなかった関数やコードがありましたので、今回の記事で補足したいと思います。

インデックスの最大値
    '配列の宣言
    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はイミディエイトウィンドウに表示する際に使用する関数です。イミディエイトウィンドウとはアプリをデバックした際に確認できるウィンドウだと思ってい下さい。

イミディエイトウィンドウとは?

いかがでしたか?こんな感じで今後も説明していない関数を補足として記事にしていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?