HOME > VBA 基礎 > このページ
ステートメント(基礎編)

■Contents

01 Beepステートメント 02 Call ステートメント 03 ChDir ステートメント
04 ChDrive ステートメント 05 Const ステートメント 06 Dim ステートメント
07 End ステートメント 08 Erase ステートメント 09 Exit ステートメント
10 FileCopy ステートメント 11 Function ステートメント 12 GoSub...Return ステートメント
13 GoTo ステートメント 14 Kill ステートメント 15 Midステートメント
16 MkDir ステートメント 17 Nameステートメント 18 Option Base ステートメント
19 Option Compare ステートメント 20 Option Explicit ステートメント 21 Private ステートメント
22 Randomize ステートメント 23 ReDimステートメント 24 Rem ステートメント
25 RmDir ステートメント 26 SendKeys ステートメント 27 Set ステートメント
28 Sub ステートメン 29 With ステートメント 30 Type ステートメント

01.Beepステートメント

【書式】Beep
 コンピュータのスピーカを鳴らします。

次の例はスピーカを10回鳴らします。
Sub Sample()
   Dim i As Integer
    For i = 1 To 10
        Beep
    Next i
End Sub



02.Call ステートメント

【書式】[Call] name [argumentlist]
Sub プロシージャ,Function プロシージャに制御を渡すフロー制御ステートメントです。
指定項目 内容
Call 省略可能。
name 呼び出すプロシージャの名前を指定します。
argumentlist  引数リスト
【解説
@ Call を使って、引数が必要なプロシージャを呼び出す場合は、引数リストをかっこで囲む必要があります。

A Call を省略するときは、引数リストを囲むかっこも省略しなければなりません。

B 配列全体を引数として渡す場合は、配列名の後ろに空のかっこを付ける必要があります。

C呼び出す側の引数名と呼び出される側の引数名は同じでなくてもかまいません。

D引数が多いとき引数を記述する順序に注意が必要です(sample1とsample2)。名前つき引数を利用すれば引数を
 記述する順序は任意でもかまいません(sample3)。
※@とAについては構文を間違った場合”コンパイルエラー”のメッセージが表示されます。特に注意する必要はありません。間違ったらその場で修正すれば OK です。
以下のsample1〜sample3のプロシジャはプロシジャCreateMsgを呼び出しています。
Sub sample1()
  Dim strM1 As String
  Dim strM2 As String
  strM1 = "カレー"
  strM2 = "ライス"
  Call CreateMsg(strM1, strM2) ’カレーライスと表示されます
  Call CreateMsg(strM2, strM1) ’ライスカレーと表示されます 
End Sub
--------------------------------------------------------------------------------------------------
Sub sample2()
  Dim strM1 As String
  Dim strM2 As String
  strM1 = "カレー"
  strM2 = "ライス"
   CreateMsg strM1, strM2    ’カレーライスと表示されます
   CreateMsg strM2, strM1    ’ライスカレーと表示されます
End Sub
--------------------------------------------------------------------------------------------------
Sub sample3()
  Dim strM1 As String
  Dim strM2 As String
  strM1 = "カレー"
  strM2 = "ライス"
   CreateMsg strTemp1:=strM1, strTemp2:=strM2  ’カレーライスと表示されます
   CreateMsg strTemp2:=strM2, strTemp1:=strM1  ’カレーライスと表示されます
End Sub
--------------------------------------------------------------------------------------------------
Sub CreateMsg(strTemp1 As String, strTemp2 As String)
   MsgBox strTemp1 & strTemp2
End Sub



03.ChDir ステートメント

【書式】ChDir path
 カレントフォルダを変更します。引数 path には、新しく設定するフォルダを表す文字列式を指定します。ドライブ名を省略してフォルダを指定すると、ChDir ステートメントはカレントフォルダをカレントドライブの該当するフォルダに変更します。
次の例は、CurDir関数を利用して現在のカレントフォルダを確認した後、Dドライブのカレントフォルダを「D:\Access2003」に設定して、再度カレントフォルダを確認しています。カレントドライブを変更しても、カレントドライブは変化していません。
Sub 確認()
   Debug.Print CurDir
   Debug.Print CurDir("C")
   Debug.Print CurDir("D")
End Sub
---------------------------------------------------------------------------------------------------
Sub 設定()
  ChDir "D:\Access2003"
End Sub
’カレントフォルダを設定する前のカレントフォルダ
C:\Documents and Settings\Yoshinobu\My Documents
C:\Documents and Settings\Yoshinobu\My Documents
D:\

’カレントフォルダを設定する前のカレントフォルダ
C:\Documents and Settings\Yoshinobu\My Documents
C:\Documents and Settings\Yoshinobu\My Documents
D:\Access2003

’ChDrive "D" を実行するしてカレントドライブを変更後のカレントフォルダ
D:\Access2003
C:\Documents and Settings\Yoshinobu\My Documents
D:\Access2003



04.ChDrive ステートメント

【書式】ChDrive drive
 カレントドライブを変更します。引数 drive には,ドライブを示す文字列式を指定します。引数 drive に長さ 0 の文字列 (" ") を指定したときは、カレントドライブは変更されません。引数 drive に 2 文字以上の文字列を指定した場合、最初の1文字だけが使用されます。
使用例次の例はDドライブをカレントドライブに変更しています。
  ChDrive "D"



05.Const ステートメント

【書式】[Public | Private] Const constname [As type] = expression
指定項目 内容
Public 省略可能。すべてのモジュール内のすべてのプロシージャから参照可能な定数を宣言するために,モジュールレベルで使用するキーワードです。プロシージャ内では、指定できません。
Private 省略可能。宣言が行われたモジュール内のプロシージャからのみ参照できる定数を宣言するときに指定するキーワードです。モジュール レベルで使用します。プロシージャ内では指定できません。
constname 定義する定数の名前を指定。
type 省略可能。定数のデータ型(Byte、Boolean、Integer、Long、Currency、Single、Double、Date、String、Variant のいずれか)を指定できます。
expression 必ず指定。リテラル値、その他の定数を指定。
【解説
@ 定数を宣言します。定数を使うと、プログラムがわかりやすく,修正も容易になります。既定では,定数はプライベートになります。

A Sub プロシージャ、Function プロシージャ内で宣言した定数は、そのプロシージャ内でのみ参照できます。プロシージャの外で宣言された定数は、宣言されたモジュール内であれば、どこからでも参照できます。

B標準モジュールでは,キーワード Public が使用できます。一方、クラス モジュールでは,キーワードPrivateのみ使用できます。

C 複数の定数宣言を 1 行にまとめるには、定数定義をカンマ (,) で区切ります。このようにして複数の定数を 1 行で宣言した場合、キーワード Public やキーワード Private を指定すると、すべての定数定義に対してキーワードが適用されます。

D As type で定数のデータ型を明示的に宣言しない場合、代入する式の評価結果に最適なデータ型が割り当てられます。
 使用例
' 既定の設定では、定数はプライベートです
    Const Mystr = "cbcnet"

 ' パブリック 定数を宣言します
    Public Const MyString = "削除してもよろしいですか?" 

' プライベートの整数型の定数を宣言します。
   Private Const MyInt As Integer = 77

 ' 1 行で複数の定数を宣言します。
   Const MyStr = "Access VBA", MyDouble As Double = 1.41441356 



06.Dim ステートメント

【書式】Dim varname[([subscripts])] [As [New] type] [, varname[([subscripts])] 
            [As [New] type]] . . 
指定項目 内容
varname 変数の名前を指定。
subscripts 省略可能。配列変数の次元を指定します。指定できる次元数の最大値は 60 です。引数 subscripts の構文は次のとおりです。[lower To] upper [, [lower To] upper] . . ..。
 引数 lower を省略した場合、配列のインデックス番号の最小値は OptionBase ステートメントによって決まります。 OptionBase ステートメントが記述されていない場合、インデックス番号の最小値は 0 になります。
New 省略可能。オブジェクト変数を宣言するときにキーワード New を指定した場合は,Set ステートメントを使ってオブジェクトへの参照を代入する必要はありません。
type 省略可能。変数のデータ型を指定します。Byte、Boolean、Integer、Long、Currency、Single、Double、Date、String (可変長の場合)、 String * length(固定長)、Object、Variantのいずれかを指定できます。As type 節は宣言する各変数に対して個別に指定します。
解説
@ 変数を宣言します。Dim ステートメントを使ってモジュール レベルで宣言された変数は、宣言したモジュール内のすべてのプロシージャから参照できます。プロシージャ レベルで宣言した変数は、宣言したプロシージャ内でのみ参照できます。

A Dim ステートメントで空のかっこを使うと、動的配列を宣言できます。宣言した後で、動的配列の次元と要素の数をプロシージャ内で定義するには、ReDim ステートメントを使います。

Bデータ型やオブジェクトの種類の指定がない場合,変数は既定のバリアント型 になります。

C オブジェクト変数を宣言するときにキーワード New を指定しない場合は、Set ステートメントを使用して変数に既存のオブジェクトを代入する必要があります。
 使用例
 '変数 MyValue はバリアント型として宣言。
    Dim MyValue

' 整数型の変数を明示的に宣言します。
  Dim intNumber As Integer

' 1 行で複数の変数を宣言します。変数 AnotherVar はバリアント型になります。
    Dim AnotherVar, Choice As Boolean, BirthDate As Date

' 変数 strTemp は、文字列型配列として宣言されます。
    Dim strTemp(50) as string

' 変数 intMatrix は、整数型の2次元配列です。
    Dim intMatrix(3, 4) As Integer

' datBirthDay は、添字が 1 〜 10 の範囲の日付型の配列です。
    Dim datBirthDay(1 To 10) As Date        

' varMyArray は、バリアント型の動的配列です。
    Dim varMyArray()

' DB は、オブジェクト型の変数です。
    Dim DB As DAO.Database
  Set DB = Currentdb() 



07.End ステートメント

ステートメント 内容
End プログラムを終了させます。必ずしも必要ではありませんが、プロシージャ内の任意の場所に指定できます。
End Function Function ステートメントを終了させます。
End If ブロック形式の If...Then...Else ステートメントを終了させます。
End Select Select Case ステートメントを終了させます。
End Sub Sub ステートメントを終了させます。
End With With ステートメントを終了させます。
 プロシージャやブロック (一連のステートメントの集まり) を終了させるフロー制御ステートメントです。End ステートメントを実行すると、すべてのモジュール内のすべてのモジュール レベル変数および静的変数が初期化されます。これらの変数の値を保持する必要がある場合は, Stop ステートメントを使用すると、変数の値を保持したまま、実行を再開できます。



08.Erase ステートメント

【書式】Erase arraylist
 引数 arraylist には、消去する配列変数を指定します。複数指定する場合は、カンマ (,) で区切ります。
配列の型 Erase ステートメントの実行結果
静的数値配列 要素はすべて 0 に設定されます。
静的文字列配列 (可変長) 要素はすべて長さ 0 の文字列 ("") に設定されます。
静的文字列配列 (固定長) 要素はすべて 0 に設定されます。
静的バリアント型 配列 要素はすべて Empty 値に設定されます。
オブジェクト配列 要素はすべて特別な値 Nothingに設定されます。

 動的配列の場合は割り当てたメモリを解放します。プログラムでこの配列を再度参照するには、ReDim ステートメントを使って、再びこの配列変数の次元を宣言する必要があります。
 使用例
Dim intNumArray(5) As Integer    ' 整数型の配列。
Dim VarArray(10) As Variant      ' バリアント型の配列。
Dim DynamicArray() As Integer    ' 動的配列。

ReDim DynamicArray(10)           ' メモリ領域を割り当てます。

Erase intNumArray                ' 各要素の値を 0 にします。
Erase VarArray                   ' 各要素の値を Empty 値にします。
Erase DynamicArray               ' 配列が占有していたメモリを解放します。



09.Exit ステートメント

 Do...Loop ループ、For...Next ループ、Function、Sub の各プロシージャを抜けるフロー制御ステートメントです。
ステートメント 内容
Exit Do Do...Loop ループを抜け、Loop ステートメントの次のステートメントに制御を移します。Do...Loop ステートメントがネスト構造になっているときは、Exit Do のあるループの 1 つ外側のループに制御を移します。
Exit For For Each...Next ループまたは For...Next ループを抜け、Next ステートメントの次のステートメントに制御を移します。For Each...Next ループまたは For...Next ループがネスト構造になっているときは、Exit For のあるループの 1 つ外側のループに制御を移します。
Exit Function このステートメントのある Function プロシージャを直ちに抜けます。制御は Function プロシージャを呼び出したステートメントの次のステートメントに移ります。
Exit Sub このステートメントのある Sub プロシージャを直ちに抜けます。制御は Sub プロシージャを呼び出したステートメントの次のステートメントに移ります。



10.FileCopy ステートメント

【書式】  FileCopy source,destination

source:コピーするファイル名を示す文字列式を指定。フォルダ名およびドライブ名を含めて指定可能。
destination:コピー後のファイル名を示す文字列式を指定。フォルダ名およびドライブ名を含めて指定可能。
 ファイルをコピーします。既に開いているファイルに対して、FileCopy ステートメントを実行しようとすると、エラーが発生します。
 使用例
   FileCopy "D:\Access2003\sample_coppact.mdb", "D:\Access2003\sample_coppact_copy.mdb"



11.Function ステートメント

【書式】
   [Public | Private][ Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression] End Function
 Function プロシージャの名前、引数、および本体部分を構成するコードを宣言します。
指定項目 内容
Public 省略可能。すべてのモジュールのすべてのプロシージャから参照できる Function プロシージャを宣言するときに指定します。
Private 省略可能。Function プロシージャを記述したモジュール内のほかのプロシージャからのみ参照できるプロシージャを宣言するときに指定します。
Static 省略可能。Function プロシージャ内のローカル変数は、次に呼び出されるまで保持されます。
name 定義する Function プロシージャの名前を指定します。
arglist 省略可能。Function プロシージャを呼び出すときに渡す引数を表す変数のリストを指定します。複数の変数を指定するときは、カンマ (,) で区切ります。
type 省略可能。Function プロシージャから返る値のデータ型を指定します。 Byte、Boolean、Integer、Long、Currency、Single、Double、Date、String(可変長のみ)、Object、Variantのいずれかを指定できます。
statements 省略可能。Function プロシージャ内で実行される一連のステートメントを指定します。
expression 省略可能。Function プロシージャの戻り値を指定します。
【解説
@ キーワード Public、 Private を指定しない場合、Function プロシージャはパブリックが既定値になります。キーワード Static を指定しない場合、ローカル変数の値は Function プロシージャの実行が終了すると破棄されます。

A Function プロシージャは、引数を受け取り、一連のステートメントを実行して、引数の値を変更します。Function プロシージャから値を返すには、値を Function プロシージャ名に代入します。組み込み関数と同じように、式の右辺に記述して、関数の戻り値を使うことができます。

B  Function プロシージャを呼び出すには、関数名の後にかっこで囲んだ引数リストを付けて使います。

C Exit Function ステートメントは、Function プロシージャを直ちに終了します。プログラムの実行は、その Function プロシージャを呼び出したステートメントの次のステートメントから継続されます。
 以下の例はチェックデジット関数の例です。
Public Function CheckD(mystring) As String
'  チェックレジット計算
      Dim i As Integer, FLAG As Integer, N As Integer
      FLAG = 0

     'flaguの計算
      N = Len(mystring)
      For i = 1 To N
           FLAG = FLAG + Val(Mid(mystring, i, 1)) * (N - i + 2)
      Next i
      FLAG = FLAG Mod 11
 
     'CDの決定
      If FLAG = 0 Or FLAG = 1 Then
           CheckD = "A"
      ElseIf FLAG = 2 Then
           CheckD = "K"
      ElseIf FLAG = 3 Then
           CheckD = "J"
      Else
           CheckD = Chr(76 - FLAG)
      End If
End Function
-----------------------------------------------------------------------------------------------
Sub Exsample()
    Dim 学籍番号 As String
    学籍番号 = "147652"
    学籍番号 = 学籍番号 & CheckD(学籍番号)
     Debug.Print 学籍番号       '-------------------------[147652B と表示されます]
End Sub



12.GoSub...Return ステートメント

【書式】GoSub line
         ...
         Exit Sub
         ine:
         ...
         Return
 プロシージャ内のサブルーチンへの分岐と復帰を行うフロー制御ステートメントです。引数 line には、行ラベルを指定します。GoSub ステートメント と Return ステートメントはプロシージャの任意の位置に指定することができますが、GoSub ステートメントとそれに対応する Returnステートメントは同じプロシージャ内になければなりません。 Return ステートメントによって GoSub ステートメントの直後のステートメントに戻ります。
 使用例
Sub Exsample()
    Dim intA As Integer
    Dim intB As Integer
    Dim ans As Integer

    intA = 15: intB = 10

    GoSub 和: Debug.Print ans
    GoSub 差: Debug.Print ans
    GoSub 積: Debug.Print ans
    
    Exit Sub
    
'以下サブルーティン
和:
     ans = intA + intB
     Return

差:
     ans = intA - intB
     Return

積:
     ans = intA * intB
     Return

End Sub



13.GoTo ステートメント

【書式】GoTo line

 line:任意の行ラベルを指定します
 プロシージャ内の指定した行に無条件に分岐するフロー制御ステートメントです。GoTo ステートメントの分岐先は、同じプロシージャ内だけです。



14.Kill ステートメント

【書式】Kill pathname

 pathname:1 つまたは複数の削除するファイル名を示す文字列式を指定します。
      フォルダおよびドライブを含めて指定できます。
 ディスクからファイルを削除します。複数のファイルを指定するための "*" (アスタリスク) および "?" (疑問符) のワイルドカード文字を使用できます。. Kill ステートメントを使って、開いているファイルを削除しようとすると、エラーが発生します。
 Kill "D:\Access2003\sample\最適化\sample_coppactcopy.mdb"



15.Mid ステートメント

【書式】Mid(stringvar, start[, length]) = string

 stringvar:変更する文字列変数の名前を指定
 start:引数stringvarの中の置き換えを始める位置を文字数単位で指定
 string:新しく置き換える文字列式を指定
 バリアント型 変数の一部を他の文字列に置き換えます。置き換える文字列には常に引数 stringvar の文字数よりも小さいか、または等しい文字列を指定します。M。引数 length を使って置き換える文字数数を指定します.。
 使用例
Sub Exsample()
  Dim strTemp As String
  strTemp = "ここ福岡では"
  Mid(strTemp, 3, 2) = "大分"
  Debug.Print strTemp
End Sub
 実行後 strTemp の値は「ここ大分では」に変化しています。



16.MkDir ステートメント

【書式】MkDir path
 新しいフォルダを作成します。引数 path には,作成するフォルダ名を示す文字列式を指定します。ドライブ名も含めて指定できます。ドライブ名を省略したときは、カレントドライブに新しいフォルダが作成されます。すでに存在するフォルダ名を指定すると、実行時エラーが発生します。
 MkDir "D:\新規フォルダ"



17.Name ステートメント

【書式】Name oldpathname As newpathname

oldpathname:名前を変更するファイル名を指定。フォルダ名およびドライブ名も含めて指定できます。
newpathname:新しいファイル名をを指定。フォルダ名およびドライブ名も含めて指定できます。
 ファイルまたはフォルダの名前を変更します。Name ステートメントはファイル名を変更して、必要に応じて他のフォルダにファイルを移動します。ドライブ間ではファイルを移動しますが、newpathname と oldbathname で指定したドライブ名が同じ場合は、単に既存のフォルダの名前を変更します。ファイルやフォルダを新しく作成することはありません。現在、開いているファイルに対して Name ステートメントを実行すると、エラーが発生します。ファイル名を変える前に、開いているファイルを閉じてください。
 使用例
 Name "D:\文書" As "D:\サンプル"
   フォルダの名前が「文書」から「サンプル」に変更されます。

 Name "D:\文書\お礼.doc" As "D:\文書\お礼1.doc"
   単にファイルの名前が、お礼1に変わります

 Name "D:\文書\お礼.doc" As "C:\サンプル\お礼_01.doc"
   「お礼.doc」はCドライブのサンプルという名前のフォルダの中に移動して、名前は「お礼_01.doc」
   に変わります。Dドライブの中にあったファイルは無くなっています。



18.Option Base ステートメント

【書式】Option Base {0 | 1}
 配列の添字の既定の最小値は 0 です。Option Base ステートメントを使用して、こ配列の添字の最小値を設定します。モジュール レベルで使用し、通常はモジュールの宣言セクションに記述します。
Dim、Private、Public、ReDim、Static などの各ステートメントで To 節を使うと、より柔軟に配列の添字の範囲を設定できます。ただし、To 節で配列の添字の最小値を明示的に設定しない場合は、Option Base ステートメントを使って既定の最小値を 1 に設定できます。
 次の例では、srtArray(1)〜srtArray(5)の変数が宣言されます。
Option Compare Database
Option Explicit
Option Base 1

Sub Sample()
 Dim srtArray(5)
End Sub



19.Option Compare ステートメント

文字列データの既定の比較方法を設定します。モジュール レベルで使います。
【書式】Option Compare {Binary | Text | Database}
[【解説】
@ Option Compare ステートメントを使う場合は、モジュールの宣言セクションに記述します。

A モジュール内での文字列の比較方法 (Binary モード、Text モード、または Database モード) を指定するものです。Option Compare ステートメントが記述されていないモジュールでは、既定の文字列比較方法である Binary モードが使われます。

B Binary モードでは、文字列比較の並べ替え順序は、バイナリ文字コードのコード順によって行われます。Visual Basicでは 、文字コードは Unicode で表現されるので、結果は Unicode のコード順によって決まります。Text モードでは、文字列比較は,50 音順で、大文字と小文字、文字幅、カタカナとひらがなを区別しない並べ替え順になります。Database モードの文字列比較の並べ替え順序は、データベースの文字列比較に適用される国別の ID によって決まります。



20.Option Explicit ステートメント

【書式】Option Explicit
  ViBは,プログラムの中に新しい変数名を見つけると,自動的にバリアント型の変数として処理を行い、宣言してない変数を使用してもエラーにはなりません。したがって、変数名を入力ミスしてもエラーは出ません。このような入力ミスを防ぐために「Option Explicitステートメント」が利用できます。

【解説
@モジュールの宣言セクションにOption Explicitステートメントを記述しておくと,宣言してない変数は使用できなく
 なります。

AOption Explicitステートメントは,追加したモジュールだけで有効です。

BViB Editorの「オプション」ダイアログボックスで「変数の宣言を強制する」をオンにすると,新たに作成した
 モジュールには,Option Explicitステートメントが自動的に追加されるようになります。



21.Private ステートメント

【書式】Private varname[([subscripts])] [As [New] type] [, varname[([subscripts])]
        [As [New] type]] ..
指定項目 内容
varname 宣言する変数の名前を指定します。
subscripts 省略可能です。配列変数の次元を指定します。指定できる次元数の最大値は 60 です。引数 subscripts の構文は、次のとおりです。[lower To] upper [,[lower To] upper] . . .
引数 lower を省略した場合、配列の添字の最小値は Option Base ステートメントによって制御されます。Option Base ステートメントが記述されていなければ、添字の最小値は 0 になります。
New 省略可能です。オブジェクト変数を宣言するときにキーワード New を指定すると、Set ステートメントを使ってオブジェクトへの参照を代入する必要はありません。
type 省略可能です。変数のデータ型を指定します。Byte、Boolean、Integer、Long)、Currency、Single、Double、Date、String) (可変長文字列)、String * length (固定長文字列)、Object、Variantのいずれかを指定できます。As type 節は宣言する各変数に対して個別に指定します。
【解説
@ プライベート変数を宣言ます。モジュール レベルで使用し、宣言されたモジュール内でのみ参照できます。

A データ型やオブジェクトの種類の指定い場合、変数のデータ型は既定のバリアント型になります。

B Private ステートメントで空のかっこを指定すると、動的配列を宣言できます。宣言した動的配列の次元と要素の数をプロシージャ内で定義するには、ReDim ステートメントを使います。



22.Randomize ステートメント

【書式】Randomize [number]
 乱数系列を再設定する数値演算ステートメントです。引数 number は省略可能です。引数 number には、バリアント型の数値または数式を指定します。引数 number を省略した場合、システム タイマーから取得した値が新しいシード値として使われます。Randomize ステートメントを使用しない場合、引数を指定しないで Rnd 関数を呼び出すと、最初に Rnd 関数を呼び出したときのシード値と同じ値が使用されます。それ以降は、直前に生成された数がシード値として使用されます。
次の例は1から6までの乱数を発生させています。
Sub 乱数()
 Randomize
 Dim i As Integer
  For i = 1 To 5
    Debug.Print Int(Rnd * 6) + 1;
  Next i
  Debug.Print
End Sub
------------------------------------------------------------------------------------------------
Sub test()
Dim j As Integer
  For j = 1 To 5
    Call 乱数
  Next j
End Sub
--------------------------------------------------------------------------------------------------
'出力例
 5  3  3  6  2 
 3  3  2  6  3 
 2  6  5  5  1 
 3  4  6  6  5 
 5  1  6  3  3 



23.ReDim ステートメント

【書式】ReDim [Preserve] varname(subscripts) [As type] [, 
                              varname(subscripts) [As type]] . . .
指定項目 内容
Preserve 省略可能。既存の配列に格納されている値を失うことなく、配列の最後の次元の要素数を変更する場合に使用するキーワードです。
varname 宣言する変数の名前です。
subscripts 必ず指定します。配列変数の次元を指定します。指定できる次元数の最大値は 60 です。引数subscripts の構文は、次のとおりです。
[lower To] upper [, [lower To] upper] . . ..。
 引数 lower を省略した場合、配列のインデックス番号の最小値は OptionBase ステートメントによって決まります。 OptionBase ステートメントが記述されていない場合、インデックス番号の最小値は 0 になります
type 省略可能です。変数のデータ型を指定します。Byte、Boolean、Integer、Long、Currency、Single、Double、Date、String) (可変長)、String * length(固定長)、Object、Variantのいずれかを指定できます。As type 節は、宣言する各変数に対して個別に指定します。
【解説
@ ReDim ステートメンは、動的配列の、要素数や次元数を変更するときに使います。

A バリアント型に格納されている配列を除き、一度あるデータ型で宣言された配列のデータ型を,別のデータ型に変更することはできません。配列がバリアント型に格納されている場合、As type 節を使用して要素のデータ型を変更できます。ただし、キーワード Preserve を使用している場合は、データ型の変更は出来まません。

Bキーワード Preserve を指定した場合、変更できるのは、動的配列の最後の次元のサイズに限られます。また、次元数は変更できません。

C キーワード Preserve を使用した場合、動的配列のサイズを変更するために変えられるのは、添字の上限だけです。配列のサイズを小さくすると、削除された配列の要素に格納されていた値は、失われます。
 使用例
Dim strArray() As String         ' 動的配列を宣言します。
ReDim strArray(5)                ' 5要素分の領域を割り当てます。
  For i = 1 To 5                   
    strArray(i) = "教室”& i               
  Next i

ReDim strArray(10)    ' 配列の要素数を10に変更します。配列の要素に格納されていた値は失われます。

For i = 1 To 10                 
    strArray(i) = "教室”& i            
Next i

ReDim Preserve strArray(15) ' 配列の要素数を 15 に変更します。
              ’以前の要素strArray(1)〜strArray(10)の値は失われません。



24.Rem ステートメント

【書式】Rem comment
    '    comment
 引数 comment には、コメントを記述します。この引数は省略可能です。キーワード Rem と引数 comment の間にはスペースが必要です。キーワード Rem の代わりに、クォーテーション (') を使えます。ただし、クォーテーション (') を使う場合は、ほかのステートメントと区切るためのコロンは必要ありません.。
 使用例
Private Sub Report_Close()
   DoCmd.ShowToolbar "印刷", acToolbarNo :Rem 印刷ツールバーを非表示にします
End Sub

Private Sub Report_Open(Cancel As Integer)
   DoCmd.Maximize
   DoCmd.ShowToolbar "印刷", acToolbarYes ’印刷ツールバーを非表示にします
End Sub



25.RmDir ステートメント

【書式】RmDir path
 既存のフォルダを削除します。引数 path には、削除するフォルダ名を表す文字列式を指定します。ドライブ名も含めて指定できます。ドライブ名を省略すると、カレントドライブのフォルダを削除します。指定したフォルダ内にファイルが存在していると、エラーが発生します。
    RmDir  RmDir "d:\Access2003\生徒管理"



26.SendKeys ステートメント

【書式】 SendKeys string[, wait]

  string:必ず指定します。転送するキー コードを表す文字列式を指定します。
  wait:(既定値) False。プロシージャの終了を待たずに次の行に制御を移します。
        True処理が終了するまで実行を一時中断します。
解説
@ キーストロークの組み合わせを,アクティブ ウィンドウに渡します。

A キーボードの各キーは1つ以上の文字で表されます。キーボード上の文字を渡すには,キーの指定にその文字を使います。たとえば、キーボード上の文字 A を表すには, "A" を指定します。複数の文字を表すには、文字を連続して設定します。たとえば,文字 A,B,C を表すには, "ABC" と指定します。

B プラス記号 (+),キャレット (^),パーセント記号 (%),チルダ (~),かっこ (( )) を表すすには,記号を中かっこ ({ }) で囲んで指定します。たとえば,プラス記号は {+} のように指定します。

C キーを押したときに表示されない文字 (Enter キーや Tab キーなど) や動作を表すキーを指定するには,次に示すコードを使います。
キー コード
BackSpace {BACKSPACE}{BS}、または {BKSP}
Ctrl + Break {BREAK}
CapsLock {CAPSLOCK}
Del または Delete {DELETE} または {DEL}
{DOWN}
End {END}
Enter {ENTER}または {~}
Esc {ESC}
Help {HELP}
Home {HOME}
Ins または Insert {INSERT} または {INS}
{LEFT}
NumLock {NUMLOCK}
PageDown {PGDN}
PageUp {PGUP}
PrintScreen {PRTSC}
{RIGHT}
ScrollLock {SCROLLLOCK}
Tab {TAB}
{UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

D Shift キー,Ctrl キー,または Alt キーと他のキーとの組み合わせを指定するには,通常のキー コードの前に次のコードを単独,または組み合わせて記述します。
キー コード
Shift +
Ctrl ^
Alt %
E Shift キー,Ctrl キー,Alt キーを押しながら他のキーを押す操作を指定するには,キーのコードをかっこで囲みます。たとえば、Shift キーを押しながら E と C を押す操作を指定するには,"+(EC)" を使います。Shiftキーを押しながら E を押し,その後 Shiftキーを離して C を押す操作を指定するには,"+EC" を使います。同じキー ストロークの繰り返しを指定するには、{key number} という形式を使います。keynumber の間には必ず半角のスペースが必要です。たとえば,{LEFT 42} は ← キーを 42 回押すことを意味します。また {h 10} は,H キーを 10 回押すことを意味します。
次の例は、最適化とデータベースのバックアップを実行するものです。Access[メニュー]バーで[ツール(T)]を選択し[データベースユーティリティ(D)]を選択し[データベースの最適化/修復(C)]をクリックするとデータベースの最適化が実行されます。この操作は[Alt]キーを押した状態で[T]キー、[D]キー,[C]キーを押しても実行できます。このキー操作を SendKeys ステートントでアクティブウインドウにわたしています。データベースのバックアップについても同様です。
'最適化
Private Sub コマンド202_Click()
     SendKeys "%(TDC)", False
End Sub

'データベースのバックアップ
Private Sub コマンド241_Click()
    SendKeys "%(TDK)", False
End Sub



27.Set ステートメント

【書式】Set objectvar = {[New] objectexpression | Nothing}
指定項目 内容
objectvar オブジェクト型の変数を指定します。
New 省略可能。キーワード New を使用すると、クラスの新しいインスタンスが作成されます。
objectexpression 必ず指定します。オブジェクト名、参照するオブジェクトと同じオブジェクトの種類の宣言済みのほかの変数、同じオブジェクトの種類のオブジェクトを返す関数名またはメソッド名、などで構成される式を指定します。
Nothing 省略可能。引数 objectvar と特定のオブジェクトとの関係を無効にします。
 オブジェクトへの参照を、変数またはプロパティに代入します。Dim、Private、Public、ReDim、Static の各ステートメントは、オブジェクトを参照する変数を宣言するだけです。Set ステートメントを使ってオブジェクトを代入すると、実際のオブジェクトを参照できるようになります。
 使用例
Private Sub cmd更新_Click()
  Dim DB As DAO.Database
  Dim RS As DAO.Recordset
  
  Set DB = CurrentDb
  Set RS = DB.OpenRecordset("T_実習施設", dbOpenDynaset)
  RS.Edit
    RS!名称 = Me.名称
    RS!郵便番号 = Me.郵便番号
    RS!住所 = Me.住所
    RS!担当者 = Me.担当者
  RS.Update
  
  RS.Close: Set RS = Nothing
  DB.Close: Set DB = Nothing
  End Sub



28.Sub ステートメント

【書式】
    [Private | Public] [Static] Sub name [(arglist)] 

          End Sub
指定項目 内容
Public 省略可能。すべてのモジュールのすべてのプロシージャから参照できる Sub プロシージャを宣言するときに指定します。
Private 省略可能。Sub プロシージャを記述したモジュール内の、ほかのプロシージャからのみ参照できるプロシージャを宣言するときに指定します。
Static 省略可能です。Sub プロシージャ内のローカル変数が、次に呼び出されるまで保持されることを示します。
name 必ず指定します。定義する Sub プロシージャの名前です。
arglist 省略可能です。Sub プロシージャを呼び出すときに、Sub プロシージャに渡す引数を表す変数のリストを指定します。複数の変数を指定するときは、カンマ (,) で区切ります。
【解説】
@ Sub プロシージャの名前、引数、およびプロシージャの本体を宣言します。キーワード Public、Privateを指定しない場合、Sub プロシージャは、パブリックプロシージャになります。キーワード Static を指定しない場合、ローカル変数の値は、Sub プロシージャの実行が終了すると破棄されます。

A Sub プロシージャは、引数を受け取り、一連のステートメントを実行して、引数の値を変更します。ただし、Sub プロシージャは値を返さないため、式の中には記述できません。

B Sub プロシージャを呼び出す方法については、Call ステートメントを参照してください。



29.With ステートメント

【書式】With object
     [statements]
    End With
指定項目 内容
object オブジェクト名を指定します。
statements 省略可能。引数 object に対して、実行するステートメントを指定します。複数のステートメントを記述できます。
【解説】
@ With ステートメントは、指定したオブジェクトに対してオブジェクト名を再定義することなく、一連のステートメントを実行することができます。たとえば、単一のオブジェクトに対して複数の異なるプロパティを変更する場合、With 制御構造内にプロパティを割り当てるステートメントを指定します。

A 1 つの With ブロックで指定できる引数 object は、1 つだけです。

B With 制御構造の内部に別の With 制御構造を入れて、ネスト構造にすることができます。ただし、同じオブジェクトに対する処理をネスト構造にすることはできません。
【書式】 With

     End With
次の例では、ラベルのプロパテイ8を設定しています。
  Sub exsample()
    With Me.ラベル0
      .BackColor = RGB(0, 255, 0)
      .Caption = "例題"
      .FontSize = "15"
      .Visible = True
    End With
  End Sub



30.Type ステートメント

 1 つまたは複数の要素を持つユーザー定義のデータ型 を宣言します。モジュール レベルで使います。
書式 [Private | Public] Type 
     varnameelementname [([subscripts])] As type
     [elementname [([subscripts])] As type]

       ・・・・・・・・・

    End Type
 Type ステートメントの構文は、次の指定項目から構成されます
指定項目 内容
Public 省略可能。すべてのプロジェクトのすべてのモジュールのどのプロシージャからも参照できるユーザー定義型を宣言するときに指定します。
Private 省略可能。宣言が行われたモジュール内でのみ参照できるユーザー定義型を宣言するときに指定します。
varname 必ず指定します。宣言するユーザー定義型の名前です。変数の名前付け規則に従って指定します。
elementname 必ず指定します。ユーザー定義型を構成する要素の名前です。要素名は、変数の名前付け規則に従って指定します。ただし、キーワードを使うこともできます。
subscripts   省略可能。配列の要素の次元を指定します。動的配列を宣言する場合は、かっこだけを指定します。引数 subscripts の構文は次のとおりです。
[lower To] upper [,[lower To] upper] . . .
引数 lower を省略すると、配列の添字の最小値は Option Base ステートメントによって制御されます。Option Base ステートメントが記述されていない場合は、添字の最小値は 0 になります。
type 省略可能。変数のデータ型を指定します。Byte、Boolean、Integer、Long、Currency、Single、Double、Date、String (可変長)、 String * length(固定長)、Object、Variantのいずれかを指定できます。
解説
@Type ステートメントは、モジュール レベルでのみ使用できます。Type ステートメントでユーザー定義型を宣言すると、その宣言の適用範囲内であれば、どこからでもその型の変数を宣言できるようになります。ユーザー定義型の変数の宣言には、Dim、Private、Public、ReDim、または Static のいずれかのステートメントを使います。

A標準モジュールでは、ユーザー定義型は既定でパブリックになり、その適用範囲はキーワード Public で変更できます。クラス モジュールでは、ユーザー定義型は常にプライベートになり、適用範囲はキーワード Public では変更できません。
BType...End Type ブロック内では、行番号と行ラベルは使えません。
Cユーザー定義型は、データ型の異なる多数の関連する要素で構成されるデータ レコードでよく使われます。
次の例は、ユーザー定義型の中に固定サイズの配列を含めたものです。
 使用例
Type StateData
    CityCode(1 To 100) As Integer     ' サイズ固定型 (静的) 配列を宣言します。
    County As String * 30
End Type

Dim Washington(1 To 100) As StateData
※この例では、StateData には固定サイズの配列 CityCode が含まれており、レコード WashingtonStateData と同じ構造になっています。
 

ホームページに|前のページに|次のページに

CopyRight(C) 2004 cbcnet. All Rights Reserved