Const
定数とその値を宣言するには、Const ステートメントを使用します。
定数を宣言することで、値にわかりやすい名前を割り当てます。
宣言した定数を変更したり、新しい値を割り当てたりすることはできません。
記述凡例
Public Const MyInteger As Integer = 42
Private Const DaysInWeek As Short = 7
Protected Friend Const Funday As String = "Sunday"
Dim
1 つ以上の変数に対して、宣言して記憶域を割り当てます
記述凡例
Dim finished As Boolean
Dim monitorBox As System.Windows.Forms.Form
Dim bottomLabel As New System.Windows.Forms.Label
Function
プロシージャを定義する名前、パラメーター、およびコードを宣言します
記述凡例
Function MyFunction(ByVal j As Integer) As Double
Return 3.87 * j
End Function
Option Base
モジュール レベルで使用して、配列の添字の既定の下限を宣言します
Option Compare
文字列データを比較するときに使用する既定の比較方法を宣言します
記述凡例
Option Compare Binary ' That is, "AAA" is less than "aaa".
Option Compare Text ' That is, "AAA" is equal to "aaa".
Option Explicit
ファイル内のすべての変数の明示的な宣言を強制させるか、変数の暗黙的な宣言を許可します
記述凡例
Option Explicit On
Option Explicit
Option Private
Visual Basic のスタンドアロン バージョンでは無効
複数のプロジェクト間での参照が許可されているホストアプリケーションで、プロジェクトの外部からのモジュールの内容の参照が禁止されます
記述凡例
'モジュールがプライベートであることを示します
Option Private Module
Private
プライベート変数を宣言して記憶領域を割り当てるために、モジュール レベルで使用します
Private 変数は、その変数を宣言したモジュール内でのみ使用できます
記述凡例
Private Number As Integer
Private NameArray(1 To 5) As String
Private MyVar, YourVar, ThisVar As Integer
Public
モジュールレベルで使用して、パブリック変数を宣言して記憶領域を割り当てます
Public ステートメントを使用して宣言した変数は、すべてのアプリケーションのすべてのモジュール内のすべてのプロシージャで使用できます
記述凡例
Public Number As Integer
Public NameArray(1 To 5) As String
Public MyVar, YourVar, ThisVar As Integer
ReDim
プロシージャレベルで使用して、動的配列変数の記憶域領域を再割り当てします
ReDim ステートメントは、空のかっこ (次元下付き文字なし) を持つ Private、Public、または Dim ステートメントを使用して、既に正式に宣言されている動的配列のサイズを変更したり、サイズを変更したりするために使用されます
記述凡例
Sub ReDimTest()
'動的配列変数に対する記憶域の容量の割り当ておよび再割り当て
Dim MyArray() As Integer
ReDim MyArray(5)
For i = 1 To 5
MyArray(i) = i
Next i
'配列のサイズを変更し、要素を消去
ReDim MyArray(10)
For i = 1 To 10
MyArray(i) = i
Next i
End Sub
Static
プロシージャ レベルで変数を宣言し、記憶域スペースを割り当てる場合に使用します。 Staticステートメントで宣言された変数は、コードが実行されている間はその値を保持します
記述凡例
Function KeepTotal(Number)
Static Accumulate
Accumulate = Accumulate + Number
KeepTotal = Accumulate
End Function
Static Function MyFunction(Arg1, Arg2, Arg3)
Accumulate = Arg1 + Arg2 + Arg3
Half = Accumulate / 2
MyFunction = Half
End Function
Set
オブジェクト参照を変数またはプロパティに割り当てます
Dim ステートメント、Private ステートメント、Public ステートメント、ReDim ステートメント、Static ステートメントは、オブジェクトを参照する変数の宣言のみを行います。 Set ステートメントを使用して特定のオブジェクトを割り当てるまでは、実際のオブジェクトは参照されません
記述凡例
Sub SetTest()
Dim TestOfj As Range
Set TestOfj = Sheets("Sheet1").Range("A3")
TestOfj.Value = "Set_Test"
MsgBox "Set したobject(Cell_A3)に文字を入力しました"
Set TestOfj = Nothing
MsgBox "objectのSetを解放しました"
End Sub
Sub
Sub プロシージャの名前、引数、および本文を形成するコードを宣言します
Sub ステートメントの構文には、次の指定項目があります Public,Private,Friend,Static
明示的な指定がない場合、Sub プロシージャは既定で Public になります
記述凡例
Sub SubTest()
Dim Area As Double
For i = 1 To 10
If i = 10 Then
MsgBox "loopが10に達したのでSubルーチンから抜け出します"
Exit Sub
End If
Next i
End Sub
Type
モジュール レベルで 使用して、1 つ以上の 要素を含 むユーザー定義のデータ型を定義します
モジュール レベルでのみ使用できます。 Type ステートメントを使用してユーザー定義型を宣言した後、その型の変数を宣言の範囲内の任意の 場所で宣言できます。 Dim、Private、Public、ReDim、または Static を使用して、ユーザー定義型の変数を宣言します
記述凡例
Type Specif ' ユーザー定義型を作成します
'データ型の要素を定義します
xStr As String
xInt As Single
End Type
Sub TypeTest()
Dim xValue As Specif
xValue.xStr = "MS_Excel"
xValue.xInt = 8.12
MsgBox "App_version:" & xValue.xStr & "_" & xValue.xInt
End Sub
Beep
ビープ音を鳴らします
記述凡例
Sub BeepTest()
MsgBox "Beep音を鳴らします", vbOKOnly
Beep
End Sub
Call
Call キーワードは、プロシージャを呼び出すときに使用できます。 ほとんどのプロシージャ呼び出しでは、このキーワードを使用する必要はありません
記述凡例
Sub TestCall()
Call (Sub() Console.Write("Hello"))()
Call New TheClass().ShowText()
End Sub
Class TheClass
Public Sub ShowText()
Console.Write(" World")
End Sub
End Class
ChDir
現在のディレクトリまたはフォルダーを変更します
記述凡例
ChDir("C:\'変更するアドレス'")
Date
データ型は、日付、時刻、またはその両方の値を格納するのに使用します
記述凡例
Dim someDateAndTime As Date = #8/13/2002 12:14 PM#
Declare
動的リンクライブラリ(DLL) 内の外部プロシージャへの参照を宣言するためにモジュール レベルで使用されます
記述凡例
Declare Sub First Lib "MyLib" (X As Long)
DefBool(Boolean)
Function プロシージャ、Property Get プロシージャの戻り値をブール型(Bool)に設定します。 このステートメントは、モジュールレベルで使用します
記述凡例
DefBool X
Sub DefBoolTest()
Dim xValue
MsgBox TypeName(xValue)
End Sub
その他の Def ステートメント
プロシージャの戻り値の型(Type)を設定します
記述凡例
DefByte(Byte) _DefCur(Currency) _DefDate(Date) _DefDbl(Double) _DefDec(Decimal) _DefInt(Integer) _DefLng(Long) _DefObj(Object) _DefSng(Single) _DefStr(String) _DefVar(Variant)
SaveSetting/DeleteSetting
Windows のレジストリのアプリケーションのエントリからセクションまたはキーを設定/削除します
記述凡例
SaveSetting appname := "MyApp", section := "Startup", key := "Top", setting := 75
SaveSetting "MyApp", "Startup", "Left", 50
DeleteSetting "MyApp", "Startup"
Do...Loop
条件が True の間または True になるまで、一連の ステートメントを繰り返し実行します
記述凡例
Sub DoLoopTest()
Dim Counter As Long
Counter = 0 ' Counterの初期化
Do While Counter < 10 '0から9までループを繰り返します
Counter = Counter + 1 'Counterの加算
MsgBox "Counter = " & Counter, vbOKOnly
Loop
MsgBox "ループを終了しました"
End Sub
End
プロシージャまたはブロックを終了します
記述凡例
expression.End
Sub xxx()
End Sub
With
.xxx
End With
Function xxx()
End Function
If...Then...Else
End If
Select Case
End Select
Type xxx
TestInt As Integer
End Type
Erase
固定サイズの配列の要素を再初期化し、動的配列記憶領域を解放します
記述凡例
Dim NumArray(10) As Integer
Erase NumArray
Exit
Do...Loop、For...Next、Function、Sub、または Property のコード ブロックの実行を終了します
記述凡例
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
ファイルをコピーします
記述凡例
FileCopy source,destination
For Each...Next
コレクション内の オブジェクトごと、または 配列内の要素ごとに、ステートメントのブロックを繰り返します。 ループを実行するたびに、Visual Basic によって変数が自動的に設定されます
記述凡例
Dim TestArray(10) As Integer, I As Variant
For Each I In TestArray
TestArray(I) = I
Next I
For...Next
指定した回数だけ、一連のステートメントを繰り返します
For...Next ループの内部に別の For...Next ループを入れて、For...Next ループをネストできます
記述凡例
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I
Get
開いているディスク ファイルから変数にデータを読み込みます
Get で読み取 ったデータ は、通常、Put を使用してファイルに 書き込まれます。 ファイルの最初のレコードまたはバイトは位置 1 になり、2 番目のレコードまたはバイトは位置 2 になります
記述凡例
VarString = String(10," ")
Get #1,,VarString
GoSub...Return
プロシージャ内で、サブルーチンに分岐し、サブルーチンから戻ります
記述凡例
Sub GosubTest()
Dim Num
Num = InputBox("正の数を入力してください、2で割ります")
If Num > 0 Then GoSub MyRoutine
MsgBox "結果は " & Num
Exit Sub
MyRoutine: Num = Num/2
Return
End Sub
Goto
プロシージャ内の指定行に無条件で分岐します
記述凡例
Sub GotoTest()
Dim Number As Integer
'Number に代入する数値を1又は2、それ以外で試してください
Number = 1
If Number = 1 Then
GoTo Line1
ElseIf Number = 2 Then
GoTo Line2
Else
GoTo LastLine
End If
Line1:
MsgBox "Line1 です"
GoTo LastLine
Line2:
MsgBox "Line2 です"
LastLine:
MsgBox "LastLine に到達しました"
End Sub
If...Then...Else
式の値に基づいて、条件に応じてステートメントのグループを実行しま
記述凡例
Sub IfThenTest()
Dim Number, Digits, MyString
Number = 53 'Number の数値を変更して試してください
If Number < 10 Then
MsgBox "Number は10未満"
ElseIf Number < 100 Then
MsgBox "Number は100未満"
Else
MsgBox "Number は100以上"
End If
'一行式・・1
If Number = 1 Then MyString = "One" Else MyString = "More than one": MsgBox MyString
'一行式・・2
If Number > 10 Then Digits = Number + 1: Digits = Number + 2: Digits = Number + Digits: MsgBox Digits
End Sub
Input
開いているシーケンシャル ファイルからデータを読み取り、変数に代入します
記述凡例
Sub InputTest()
Dim MyString, MyNumber
Open "InputFileName" For Input As #1
Do While Not EOF(1)
Input #1, MyString, MyNumber
Debug.Print MyString, MyNumber
Loop
Close #1
End Sub
Kill
ディスクからファイルを削除します
Microsoft Windows で、Kill で MacID 関数を使用するとエラーが発生します。 開いているファイルを Kill を使用して削除する場合も、エラーは発生します
記述凡例
' Assume TESTFILE is a file containing some data.
Kill "TestFile" ' Delete file.
' Delete all *.TXT files in current directory.
Kill "*.TXT"
Let
式の値を変数またはプロパティに代入します
記述凡例
Dim MyStr, MyInt
' Letステートメントを使用して変数の割り当てを行います
Let MyStr = "Hello World"
Let MyInt = 5
'明示的に Letステートメントを記述する必要は有りません
MyStr = "Hello World"
MyInt = 5
Line Input
開いているシーケンシャル ファイルから 1 行を読み込み、それを文字列変数に割り当てます
記述凡例
Dim TextLine
Open "TESTFILE" For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
Debug.Print TextLine
Loop
Close #1
Load
オブジェクトを読み込みますが、そのオブジェクトは表示されません
読み込まれたオブジェクトはメモリに配置されます
オブジェクトを表示するには、Show メソッドを使用します
記述凡例
Private Sub UserForm_Initialize()
Load UserForm2
UserForm2.Show
End Sub
Lock/Unlock
LockステートメントはOpenステートメントで開いたファイルの一部または全部を、他プロセスのアクセスからロックします
UnLockステートメントは、Lockステートメントで制御したロックを解除します
LSet/Reset
文字列変数内で文字列を左揃え又は右揃えにします。また、ユーザー定義型の変数を別のユーザー定義型の変数にコピーすることもできます
記述凡例
Sub R_L_SetTest()
Dim TesStr As String, Cap As String * 30
RSet Cap = "Reset"
TesStr = Cap & vbCrLf
LSet Cap = "LSet"
TesStr = TesStr & Cap
MsgBox TesStr
End Sub
On Error
エラー処理ルーチンを有効にして、プロシージャ内のルーチンの場所を指定します。エラー処理ルーチンを無効にする目的でも使用できます
記述凡例
On Error GoTo ErrorHandler
On..GoTo/On..GoSub
式の値に応じて、複数の指定した行のいずれかに分岐します
Open
ファイルへの入出力 (I/O) を有効にします
ファイルに対する I/O 操作を実行する場合は、その前にファイルを開いておく必要があります。 Open により、ファイルへの I/O のためのバッファーが割り当てられて、そのバッファーで使用するアクセス モードが決まります
記述凡例
Sub StopTest()
'シーケンシャル入力モードでファイルを開きます
Open "D:\test.txt" For Input As #1
'別のモードで再度開く前に閉じます
MsgBox "test.txtをシーケンシャル入力モードで開きました"
Close #1
'書き込み操作のためにのみ Binary モードでファイルを開きます
Open "D:\test.txt" For Binary Access Write As #1
MsgBox "test.txtをBinary モードで開きました"
'別のモードで再度開く前に閉じます
Close #1
End Sub
Print
シーケンシャル出力モードで開いたファイルに、データを書き込みます
記述凡例
Sub PrintTest()
'test.txtの10桁目からTestと書き込みます
Open "D:\test.txt" For Output As #1
Print #1, Tab(10); "Test"
Close #1
End Sub
Property Get/Let/Set
プロパティの値を取得する Property プロシージャの名前、引数、および本文を形成するコードを宣言します
すべてのモジュールのすべてのプロシージャから参照できるプロパティを宣言します
Put
変数のデータをディスク ファイルに書き込みます
通常、Put で書き込むデータは、Get でファイルから読み取ります
記述凡例
Type Record ' Define user-defined type.
ID As Integer
Name As String * 20
End Type
Dim MyRecord As Record, RecordNumber ' Declare variables.
' Open file for random access.
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
For RecordNumber = 1 To 5 ' Loop 5 times.
MyRecord.ID = RecordNumber ' Define ID.
MyRecord.Name = "My Name" & RecordNumber ' Create a string.
Put #1, RecordNumber, MyRecord ' Write record to file.
Next RecordNumber
Close #1 ' Close file.
Randomize
Rnd 関数の乱数ジェネレーターを初期化しします
記述凡例
Dim MyValue
Randomize ' Initialize random-number generator.
MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.
Rem
プログラム内に説明のための注釈を入れる場合に使用します
記述凡例
Dim MyStr1, MyStr2
MyStr1 = "Hello": Rem ステートメントの後のコメント.
MyStr2 = "Goodbye" ' これもコメントです。 コロンは必要ありません.
Resume
エラー処理ルーチンの終了後に実行を再開します
Resume では、エラーが発生した行を再度実行します。
Resume Nextでは、エラーが発生した行の次行から処理を再開します。
Resume lineでは、lineで指定した行ラベルまたは行番号の行に分岐します
記述凡例
Sub ResumeTest()
On Error GoTo ErrorHandler
Dim TestData As Boolean
TestData = "String" 'ErrorNo.13(型相違)を発生します
'ErrorHandler へジャンプします
MsgBox TestData
ErrorHandler:
TestData = True '正しい型の値を代入します
Resume Next 'エラー発生の次の行に差し戻します
End Sub
Return
プロシージャ内で、サブルーチンに分岐し、サブルーチンから戻ります
記述凡例
Sub GosubTest()
Dim Num
Num = InputBox("2で割る正の数を入力してください")
If Num > 0 Then GoSub ExRoutine
MsgBox Num
Exit Sub
ExRoutine:
Num = Num / 2
Return
End Sub
RmDir
既存のディレクトリまたはフォルダーを削除します
記述凡例
Sub RmDirTest()
If Dir("C:\TestFolder", 16) = "" Then
MkDir "C:\TestFolder"
MsgBox "Drive C:\にTestFolderフォルダを作成しました"
End If
RmDir "C:\TestFolder"
MsgBox "C:\のTestFolderフォルダを削除しました"
End Sub
SavePicture
imageやobjectに表示された画像を指定した画像ファイルに保存します
記述凡例
Sub SavePictureTest()
'D:\に"D:\win.bmp"を配置します
With UserForm1
.Picture = LoadPicture("D:\win.bmp")
.Show
End With
End Sub
'UserForm1にCommandButton1を配置します
Private Sub CommandButton1_Click()
SavePicture UserForm1.Picture, "D:\win.jpg"
MsgBox "UserForm1にLoadされた画像[D:\win.bmp]を[D:\win.jpg]として保存しました"
End Sub
Seek
Open ステートメントを使用して開いたファイル内で、次の読み取り/書き込み操作のための位置を設定します
記述凡例
Sub SeekTest()
Dim xSize, NextStr, xStr
'数行のテキストを格納しているファイル["D:\test.txt]をセットします
Open "D:\test.txt" For Input As #1 'ファイルを開く
xSize = LOF(1) ' ファイルのサイズをバイト単位で取得
MsgBox "size = " & xSize & " byte"
'※51byte半角文字+改行(4*2byte)=59
'ループにより文末から全ての文字を読み取ります
For NextStr = xSize To 1 Step -1
Seek #1, NextStr
xStr = xStr + Input(1, #1)
Next NextStr
Close #1
MsgBox xStr
End Sub
Select Case
式の値に応じて、複数のステートメントのグループのいずれかを実行します
記述凡例
Sub SelectCaseTest()
Dim Number
Number = 7 '判定対象の値設定(文字や数値等)
Select Case Number
Case 1 To 5 ' 1から5までの数値
MsgBox "Numberは1から5までの数値"
Case 6, 7, 8 '6,7,8のいずれかの数値
MsgBox "Numberは6から8までの数値"
Case 9 To 10 '9から10の数値
MsgBox "Numberは9から10までの数値"
Case Else '上記以外
MsgBox "Numberは1から10の間の数値では無い"
End Select
End Sub
SendKeys
キーボードから入力したかのように、1 つ以上のキーボード操作をアクティブなウィンドウに送信します
記述凡例
Sub SendKeysTest()
ActiveSheet.Cells(1, 1).Select
SendKeys "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
SendKeys "{Enter}"
End Sub
SetAttr
ファイルの属性情報を設定します
設定値は以下のいずれか
vbNormal[0],vbReadOnly[1],vbHidden[2],vbSystem[4],vbArchive[3],vbAlias[64]Macintosh only
記述凡例
Sub SendKeysTest()
' 対象ファイルを[隠しファイル]および[読み取り専用]に設定
SetAttr "D:\Test.txt", vbHidden + vbReadOnly
End Sub
Stop
実行を一時停止します
Stop ステートメントは実行を中断しますが、End とは異なり、ファイルを閉じたり 変数を解除することはありません
記述凡例
Sub StopTest()
Dim i
For i = 1 To 10 ' Start For...Next loop.
MsgBox "loop[" & i & "]回目です、コードの実行を中断します。"
Stop
Next i
End Sub
Time
システムの時刻を設定します
現在のシステム時間を示すTime関数とは別
記述凡例
Sub PrintTest()
'Time ステートメントを使用してコンピューター システムの時刻をユーザー定義の時刻に設定します
Dim MyTime
MyTime = #4:35:17 PM# ' Assign a time.
Time = MyTime ' Set system time to MyTime.
End Sub
'※OSにより非サポート
Unload
メモリからオブジェクトを削除します
オブジェクトは、アンロード時にメモリから削除され、そのオブジェクトに関連付けられていたすべてのメモリが解放されます
記述凡例
Load UserForm2
UserForm2.Show
Unload UserForm2
While..Wend
特定の条件が True である限り一連の ステートメントを実行します
記述凡例
Sub WhileWendTest()
Dim Counter
Counter = 0
While Counter < 20
Counter = Counter + 1
Wend
MsgBox Counter
End Sub
Width
Open ステートメントで開いたファイルに出力する行の幅を設定します
記述凡例
Sub WidthTest()
Dim I
Open "D:\test.txt" For Output As #1 '出力用にファイルを開きます
VBA.Width 1, 5 '出力幅を5に設定します
For I = 0 To 9 '10回ループします
Print #1, Chr(48 + I); '1行に5文字を出力します
Next I
Close #1 'ファイルを閉じます
End Sub
With..End With
オブジェクトまたは構造のメンバーにアクセスする場合にステートメントで簡単な構文を使用できるように、単一のオブジェクトまたは構造を繰り返し参照する一連のステートメントを実行します
記述凡例
Sub With_Test()
With UserForm1
.Height = 180
.Width = 300
With .CommandButton1
.Caption = "ボタン"
.ForeColor = &HFF&
End With
.Show
End With
End Sub
Write
シーケンシャル ファイルにデータを書き込みます
記述凡例
Sub Write_Test()
Open "D:\test.txt" For Output As #1 '出力用にTextファイルを開きます
Write #1, "Hello World", 234 'カンマ区切りのデータを書き込みます
Write #1, '空白行を書きます
Dim MyBool, MyDate, MyNull, MyError
'ブール値、日付、ヌル、およびエラー値を割り当てます
MyBool = False: MyDate = #2/12/1969#: MyNull = Null
MyError = CVErr(32767)
'ブールデータは#TRUE#または#FALSE#として書き込まれます。 日付リテラルは
'ユニバーサル日付形式で記述されています。たとえば、#1994-07-13#
'1994年7月13日を表します。ヌルデータは#NULL#として書き込まれます
'エラーデータは#ERRORエラーコード#として書き込まれます
Write #1, MyBool; " is a Boolean value"
Write #1, MyDate; " is a date"
Write #1, MyNull; " is a null value"
Write #1, MyError; " is an error value"
Close #1 'ファイルを閉じます
End Sub