Excel VBAエキスパート資格・スタンダード試験対策の問題集に出題している「変数と配列」の解説ページです。
目次
Excel VBA 変数と配列の違い
ExcelVBAの変数と配列は、データを格納するための方法ですが、その使い方や保持するデータのタイプに違いがあります。
変数は単一の値を格納するための箱です。整数、文字列、真偽値など、どれか1つのデータを保持します。
変数は明示的に宣言、1つのデータを保持して必要に応じて変数の値を変更できます。
Dim myVar As Integer
myVar = 5
myVarという変数が1つの整数値 5 を保持しています。
配列は複数のデータを一度に格納する仕組みです。同じ種類の複数のデータを1つの変数で管理できます。
配列内の個々のデータはインデックス(位置)を使用してアクセスします。複数の値を持ち、それぞれが異なるインデックスを持ちます。
Dim myArray(4) As Integer
myArray(0) = 10
myArray(1) = 20
myArray(2) = 30
myArray(3) = 40
myArray(4) = 50
配列の宣言は、変数名に続けて括弧を使用します。
myArrayという配列が5つの整数値を保持しています。それぞれの値はインデックスを使ってアクセスでき、0から始まる連続した数値で識別します。
Excel VBA Split関数で配列を作成
文字列を指定された区切り文字で分割し、それらの部分文字列を要素とする配列に分割します。
主な目的は、与えられた文字列を指定された区切り文字で分割して、その部分文字列を扱いやすい形で取得することです。
Sub SplitExample()
Dim originalString As String
originalString = "Apple,Orange,Banana,Grapes"
Dim fruits() As String
fruits = Split(originalString, ",") ' カンマを区切り文字として分割
' 分割された要素をループで表示する例
Dim i As Integer
For i = LBound(fruits) To UBound(fruits)
MsgBox "フルーツ" & i & ": " & fruits(i)
Next i
End Sub
originalStringという文字列をカンマで区切って配列に分割しています。
Split関数はカンマを区切り文字として使用しているため、
fruits配列に、"Apple"、"Orange"、"Banana"、"Grapes"の4つの要素が格納されます。
その後、ループを使用して配列の要素を表示します。
LBound(fruits)は配列の下限値、UBound(fruits)は配列の下限値で、この例では0から3になります。
Excel VBA 動的配列のReDim
ReDimステートメントは、実行時に配列のサイズを変更するVBAステートメントです。
実行時に配列のサイズを調整したり、動的に要素を追加できます。
Sub ReDimExample()
Dim dynamicArray() As Integer ' 動的配列
ReDim dynamicArray(2) ' 配列のサイズを3に設定
' 要素に値を代入する例
dynamicArray(0) = 10
dynamicArray(1) = 20
dynamicArray(2) = 30
' 配列のサイズを変更して要素を追加する例
ReDim Preserve dynamicArray(3) ' 配列のサイズを4に変更
dynamicArray(3) = 40 ' 新しい要素を追加
' 配列の要素をループで表示する例
Dim i As Integer
For i = LBound(dynamicArray) To UBound(dynamicArray)
MsgBox "要素" & i & ": " & dynamicArray(i)
Next i
End Sub
dynamicArrayという動的配列を宣言し、ReDimステートメントを使って最初のサイズを3に設定しています。
その後、ReDim Preserveを使って配列のサイズを変更し、新しい要素を追加しています。
最後に、ループを使用して配列の要素を表示しています。
Preserveを使用することで、既存の要素を保持しつつ配列のサイズを変更できます。
ReDim Preserveステートメントは、動的配列のサイズを変更する際に、既存のデータを保持しつつ配列のサイズを変更するVBAステートメントです。ReDim Preserveでなく、ReDim だけの場合は、既存のデータを失います。
Excel VBA オブジェクト変数
オブジェクト(Range、Worksheet、Workbookなど)を操作するために、オブジェクトを変数として宣言します。
特定のシートやセルのデータを処理したり、ワークブック全体を操作したりする手段となります。
Dim 変数名 As オブジェクト型
※オブジェクト型は、 宣言するオブジェクトの種類で、たとえば、Range、Worksheet、Workbookなどです。
Sub ObjectVariablesExample()
Dim ws As Worksheet ' Worksheetオブジェクトの変数を宣言
' Worksheetオブジェクトを変数に代入
Set ws = ThisWorkbook.Sheets("Sheet1")
' 変数を使用してセルに値を代入
ws.Range("A1").Value = "Hello, World!"
' 変数を使用してセルの値を取得し、メッセージボックスで表示
MsgBox "A1セルの値は " & ws.Range("A1").Value & " です。"
End Sub
Worksheetオブジェクトの変数 ws を宣言し、Setステートメントを使用して変数にWorksheetオブジェクトを代入しています。
その後、変数 ws を使ってシート上のセルに値を代入し、その値を取得してメッセージボックスで表示しています。オブジェクト変数を使用することで、Excelのシートやセルなどの要素を効果的に操作できます。
Nothingは、VBAでオブジェクト変数を解放するために使用します。
変数が参照しているオブジェクトとの関連が解除され、メモリから解放します。
Set オブジェクト変数 = Nothing
Sub ReleaseObjectVariableExample()
Dim ws As Worksheet ' Worksheetオブジェクトの変数を宣言
' Worksheetオブジェクトを変数に代入
Set ws = ThisWorkbook.Sheets("Sheet1")
' オブジェクトを使用して何か処理する...
' オブジェクト変数を解放(Nothingに設定)
Set ws = Nothing
' wsが参照していたオブジェクトは解放され、この後のws使用はエラーになります
End Sub
Worksheetオブジェクトの変数 ws を宣言し、オブジェクトを代入して処理を行った後、 Set ws = Nothing を使って変数 ws が参照していたオブジェクトを解放しています。
Nothingに設定された変数は、それ以上何かを参照せず、この後にその変数を使用するとエラーが発生する可能性があります。
オブジェクトの不要なメモリを解放するために、オブジェクト変数を使用した後は適切なタイミングでNothingに設定することが重要です。
Excel VBA 変数の演算
Sub CountExample()
Dim countVariable As Integer ' カウントするための変数を宣言し、0で初期化する
countVariable = 0 ' 初期化
Dim i As Integer
For i = 1 To 10 ' ループを使用して1から10までカウント
countVariable = countVariable + 1 ' カウント変数を1つ増やす
Next i
MsgBox "カウントされた数は " & countVariable & " です。"
End Sub
countVariableという変数を宣言し、初期値を0に設定しています。
その後、Forループを使用して1から10までの範囲をカウントしています。
ループ内でcountVariableを1ずつ増やし、最終的なカウントされた数をメッセージボックスで表示しています。
こうした操作で変数を使ってカウントできます。
Excel VBA 変数の初期値
変数の初期値は、変数が使用される前に設定される値です。初期値の設定は、変数の動作やコードの読みやすさを向上させるために重要です。
初期値の設定は任意ですが、特に数値や文字列の変数を使用する場合は初期化が推奨されます。初期値を設定することで、変数が意図せず未初期化のまま使用されるリスクを軽減できます。
変数の初期値は、データ型に合わせた適切な値を設定します。数値型の場合は0や1、文字列型の場合は空文字列 `""` を使用することが一般的です。
Sub InitialValueExample()
Dim numberVariable As Integer ' 整数型の変数、初期値は0
Dim textVariable As String ' 文字列型の変数、初期値は空文字列
' 初期値を使用して変数を操作
numberVariable = 10
textVariable = "Hello, World!"
' 変数の値を表示
MsgBox "数値変数の値: " & numberVariable & vbCrLf & "文字列変数の値: " & textVariable
End Sub
numberVariableとtextVariableという変数を宣言し、数値型の変数には0、文字列型の変数には空文字列 `""` を初期値として設定しています。
その後、それぞれの変数に値を代入し、その値をメッセージボックスで表示しています。
初期値の設定は変数の使用方法や読みやすさを向上させます。
Excel VBA 文字列の結合
文字列結合は、複数の文字列を一つにまとめる操作です。VBAでは、`&`演算子や`+`演算子を使って文字列を結合できますが、一般的に`&`演算子を使うことが推奨されています。
Sub StringConcatenationExample()
Dim firstName As String
Dim lastName As String
Dim fullName As String
firstName = "John"
lastName = "Doe"
' & 演算子を使用した文字列結合
fullName = firstName & " " & lastName ' スペースを追加してフルネームを作成
' メッセージボックスで結合された文字列を表示
MsgBox "フルネームは: " & fullName
End Sub
firstNameとlastNameという文字列変数を宣言し、それぞれに値を設定しています。そして & 演算子を使用して、スペースを追加してfirstNameとlastNameを結合し、fullNameという新しい文字列変数に格納しています。
最後にメッセージボックスでfullNameを表示しています。文字列結合は、特に複数の文字列を一つにまとめる際に非常に役立ちます。
変数と配列|記憶定着問題集
操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。
変数は●●●の値を格納するための箱です。整数、文字列、真偽値など、どれか●●●のデータを保持します。
変数は明示的に宣言、●●●のデータを保持して必要に応じて変数の値を変更できます。
●●●は●●●のデータを一度に格納する仕組みです。同じ種類の●●●のデータを1つの変数で管理できます。配列内の個々のデータは●●●を使用してアクセスします。複数の値を持ち、それぞれが●●●インデックスを持ちます。
●●●関数文字列を指定された●●●で分割し、それらの部分文字列を要素とする配列に分割します。
主な目的は、与えられた文字列を指定された●●●で分割して、その部分文字列を扱いやすい形で取得することです。
Sub SplitExample()
Dim originalString As String
originalString = "Apple,Orange,Banana,Grapes"
Dim fruits() As String
fruits = ●●●(originalString, ●●●) ' カンマを区切り文字として分割
' 分割された要素をループで表示する例
Dim i As Integer
For i = ●●●(fruits) To ●●●(fruits)
MsgBox "フルーツ" & i & ": " & fruits(i)
Next i
End Sub
動的配列の●●●
●●●ステートメントは、実行時に配列の●●●を変更するVBAステートメントです。
実行時に配列のサイズを調整したり、動的に要素を追加できます。
Sub ReDimExample()
Dim dynamicArray●●● As Integer ' 動的配列
ReDim dynamicArray(2) ' 配列のサイズを3に設定
' 要素に値を代入する例
dynamicArray(0) = 10
dynamicArray(1) = 20
dynamicArray(2) = 30
' 配列のサイズを変更して要素を追加する例
●●● dynamicArray(3) ' 配列のサイズを4に変更
dynamicArray(3) = 40 ' 新しい要素を追加
' 配列の要素をループで表示する例
Dim i As Integer
For i = ●●●(dynamicArray) To ●●●(dynamicArray)
MsgBox "要素" & i & ": " & dynamicArray(i)
Next i
End Sub
dynamicArrayという動的配列を宣言し、●●●ステートメントを使って最初のサイズを3に設定しています。
その後、●●●を使って配列のサイズを変更し、新しい要素を追加しています。
最後に、ループを使用して配列の要素を表示しています。
●●●を使用することで、既存の要素を保持しつつ配列のサイズを変更できます。注意点
●●●ステートメントは、動的配列のサイズを変更する際に、既存のデータを●●●しつつ配列のサイズを変更するVBAステートメントです。●●●でなく、●●● だけの場合は、既存のデータを失います。
オブジェクト変数
オブジェクト(●●●など)を操作するために、オブジェクトを変数として宣言します。
特定の●●●や●●●のデータを処理したり、●●●全体を操作したりする手段となります。
Dim 変数名 As ●●●
※オブジェクト型は、 宣言するオブジェクトの種類で、たとえば、●●●、●●●、●●●などです。
Sub ObjectVariablesExample()
Dim ws As ●●● '●●●オブジェクトの変数を宣言
' Worksheetオブジェクトを変数に代入
●●● ws = ThisWorkbook.Sheets("Sheet1")
' 変数を使用してセルに値を代入
ws.Range("A1").Value = "Hello, World!"
' 変数を使用してセルの値を取得し、メッセージボックスで表示
MsgBox "A1セルの値は " & ws.Range("A1").Value & " です。"
End Sub
その後、変数 ws を使ってシート上のセルに値を代入し、その値を取得してメッセージボックスで表示しています。オブジェクト変数を使用することで、Excelのシートやセルなどの要素を効果的に操作できます。
オブジェクト変数の破棄に使う●●●
●●●は、VBAでオブジェクト変数を解放するために使用します。
変数が参照しているオブジェクトとの関連が解除され、メモリから解放します。
Set オブジェクト変数 = ●●●
Sub ReleaseObjectVariableExample()
Dim ws As Worksheet ' Worksheetオブジェクトの変数を宣言
' Worksheetオブジェクトを変数に代入
Set ws = ThisWorkbook.Sheets("Sheet1")
' オブジェクトを使用して何か処理する...
' オブジェクト変数を解放(●●●に設定)
Set ws = ●●●
' wsが参照していたオブジェクトは解放され、この後のws使用は●●●になります
End Sub
Worksheetオブジェクトの変数 ws を宣言し、オブジェクトを代入して処理を行った後、 ●●● ws = ●●● を使って変数 ws が参照していたオブジェクトを解放しています。
●●●に設定された変数は、それ以上何かを参照せず、この後にその変数を使用すると●●●が発生する可能性があります。オブジェクトの不要な●●●を解放するために、オブジェクト変数を使用した後は適切なタイミングで●●●に設定することが重要です。
変数の初期値
変数の初期値は、変数が●●●に設定される値です。初期値の設定は、変数の動作やコードの読みやすさを向上させるために重要です。
注意点
初期値の設定は任意ですが、特に数値や文字列の変数を使用する場合は●●●が推奨されます。初期値を設定することで、変数が意図せず未初期化のまま使用されるリスクを軽減できます。
変数の初期値は、●●●に合わせた適切な値を設定します。数値型の場合は●●●、文字列型の場合は●●● を使用することが一般的です。
文字列の結合
文字列結合は、複数の文字列を一つにまとめる操作です。VBAでは、●●●演算子や●●●演算子を使って文字列を結合できますが、一般的に●●●演算子を使うことが推奨されています。
Excel VBAのスキルを活かして、仕事の効率化に貢献しませんか?
当サイトでは、Excel VBAエキスパート認定資格取得に向けた情報を提供しています。興味がある方は、ぜひ以下の問題集からチャレンジしてみてください。
ExcelVBAエキスパートスタンダードは、業務効率をあげるためにExcelVBAを利用する人が対象の問題集です。