※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

引っ越しました

OAK(OpenAccessKnowledgement)

以降、本サイトは更新されませんので、上記サイトのご利用をお願いします。


 

ノンプログラマーで『初心者本は読んだがよくわらかん』とか『知っているプログラミング言語はExcelVBAやJavaScriptをちょこっとだけ』という程度の方を対象にしています。

プロなら分厚い書籍を3冊ほど読めばいけると思いますので読まなくて良いです。

※デザインとかはまだ全然です。見づらいと思いますが、しばらく我慢して読んでください。。。


オリエンテーション
  • AccessはテーブルとGUIとSQLとDBエンジンが一体になっている。
  • 複数で共有できるが同時に10人程度が限度。
  • 共有のDBファイルを使用するにもローカルPCにAccessは必要。
  • Accessは単体で買っても昔と違ってけっこう安い。
  • DBとしてはExcel以上SQLServer以下。
  • 拡張子はMDBファイル。作成する時は、まず名前をつけて保存をする必要がある。
  • プログラミング(VBA)をしないでもある程度は使える。
  • Excelではファイルが重くなってしまった場合や共有を行いたい場合に使用される事が多い。

《用意するもの》

Access単体 または MS-OfficeProfessional

《コーディングの準備》

付属するVBE(VisualBasicEditor)で記述する。

  1. Alt+F11
  2. コントロール(ボタンなどの部品)を右クリック → イベントのビルド → コードビルダを選択

 《データベースオブジェクト》

ウェブデータベースだと、プログラム言語にPHP、見た目はHTMLやCSS、データベースはMySQL などと異なった技術を組み合わせて使用する。 Accessではそんなことはない。すべてAccessで行う。 Accessは以下の部品で構成されている。

テーブル データが保存される場所。
フォーム 登録/閲覧用のウィンドウ。ボタンやテキストボックスがある。
レポート 印刷した時のレイアウト。印刷プレビューのようなもの。
クエリ テーブルのデータを指定した条件で抽出・加工して表示したもの。  
モジュール Access(やExcel)などを自動化して使用するためのプログラミング言語。ホームページでいうジャバスクリプトのようなもの。
マクロ あらかじめ用意された動作を指定して自動化する。あまり使われない。
ページ ウェブブラウザで使用できるようにしたもの。ほとんど使われない。最新版では存在しない。  


 

基礎

《ショートカットキー》

VBEditorの起動 → Alt+F11

ヘルプの表示 → (調べたいステートメントを選択して)F1  

《文法チェック》

  • Option Compare Database
    デフォルトで自動挿入される。テキストの比較順序を規定しています。  
  • Option Explicit
    VBEで設定する。変数の宣言を強制する。 [ツール] → [オプション] → ”編集”タブ → 「変数の宣言を強制する」

《メッセージの表示》

Msgbox "Hello!!"  

《コメント》

' コメント

変数・定数・配列

【変数

《変数の宣言》

Dim 変数名 As データ型

※データ型は省略するとVariant型になる。

例)Dim strUserName As String  

《変数に代入》

変数名 = 代入する値 ※左辺に右辺の値が代入される。

例)strUserName = "山田太郎"

《変数の取得》 

オブジェクト名.プロパティ名 = 変数名

※プロパティの値に、変数の値が挿入される  

例)tbxMemo.Value = strAnswer 変数名1 = 変数名2

※変数名1に変数名2の値が代入される。

intNew = intOld

【定数】 

Const 定数名 As データ型 = 値 ※変数と違い、宣言と同時に値を代入する。

例)Const TAX As Double = 0.05  

【配列】

《配列の宣言》 

Dim 配列名(インデックス番号) As データ型

※要素数は0からカウントするので「必要な数 - 1」となる。

例)Dim aryBaseballPlayers(8) As String  

Dim 配列名( インデックス番号 1, インデックス番号 2) As データ型 ※二次元配列。

Dim 配列名() As データ型

Redim 配列名(インデックス番号)

※すでに格納されていた要素は初期化される。

Dim 配列名() As データ型

Redim Preserve 配列名(インデックス番号)  

※すでに格納されていた要素は保持される。

Dim 配列名 As Variant 配列名 = Array(要素1,要素2,要素3)

※バリアント型の変数を作成して、Array関数で挿入。

《配列に代入》 

配列名(インデックス番号) = 値

※インデックス番号とは要素数の何番目かの数字。

例)aryBaseballPlayers(0) = "イチロー"  

《配列の取得》

オブジェクト名.プロパティ = 配列(インデックス番号)

※プロパティの値に、配列のインデックス番号で指定した値が挿入される。  

例)tbxPlayerName.Value = aryBaseballPlayers(0)

配列名(インデックス番号) = 変数名

※変数の値が、インデックス番号で指定した配列の値に代入される。

aryBaseballPlayers(1) = strCaptain

【データ型】

※変数・定数・配列には、代入されるデータの種類に応じたデータ型があります。
指定されたデータ型により、その変数の値の処理や扱い方が異なってきます。
エクセルのセルの書式設定で「文字列」とか「数値」などを指定することができますが、あれと似たようなことです。

AccessVBA データ型一覧
型名 型指定文字 格納データの詳細 格納データ概要
ブール型 Boolean True(真)またはFalse(偽)のどちらかを格納できる 論理値
バイト型 Byte 0~255までの整数を格納できる 数値データ ※扱うデータの大きさで使い分ける
整数型 Integer -32768~32767までの整数を格納できる
長整数型 Long -2,147,483,648~2,147,483,647までの整数を格納できる
通貨型 Currency -922,337,203,685,477.5808~922,337,203,685,477.5807 の固定小数点を格納できる
単精度浮動小数点型 Single -3.402823E38 ~ -1.401298E-45 (負の値) 1.401298E-45 ~ 3.402823E38 (正の値)
倍精度浮動小数点型 Double (負の値) -1.79769313486231E308 ~ -4.94065645841247E-324 (正の値) 4.94065645841247E-324 ~ 1.79769313486232E308
日付型 Date 西暦100年1月1日00:00:00~西暦9999年12月31日23:59:59 の間の日付と時刻が格納できる 日付・時刻
文字列型 String 任意の長さ(約2GB分)の文字列が格納できる 文字列
オブジェクト型 Object 何らかのオブジェクトへの参照を格納できる オブジェクト
バリアント型 Variant あらゆる種類のデータを格納できる すべて
制御文

【条件分岐】

条件分岐のステートメントとは、「ある条件を指定して、その条件が満たされる/満たされないことで、行う処理を変える」ことを言います。

例えば、あるレコードの”配偶者”というフィールドが「有」なら自動的に「結婚手当」フィールドを「要」に変え、そうじゃないなら「否」と挿入する、などの使い方ができます。

条件を満たすことを『True』とか『真(しん)』といいます。 逆に条件を満たさないことを『False』とか『偽(ぎ)』といいます。

If 条件式 Then
処理
End If
If 条件式 Then
条件が成立した時の処理
Else
条件が成立しなかった時の処理
EndIf
If  条件式① Then
  条件式①が成立した時の処理
ElseIf 条件式②
Then
  条件式②が成立した時の処理
Else
  すべての条件が成立しなかった時の処理(デフォルト)
End If
Select Case 条件判断の対象
Case 条件式①
  条件式①を満たすときの処理
Case 条件②
  条件式②を満たすときの処理
Case Else
  すべての条件を満たさないときの処理(デフォルト)
End Select

※Select Case文の条件式 Case 1,2,3 『1または2または3』の意

Case = 1
『1』の意

Case 1 To 10
『1~10』の意

Case Is >=1
『1以上(比較演算子を使うときは、「Case Is」となる)』の意

Case Is <= 1
『1以下』の意

Case "東京都"
『東京都(文字列の時はダブルクォーテーションで囲む)』の意

【繰り返し処理】

指定した処理を繰り返したい場合に使用するステートメントです。ループ処理ともいいます。 繰り返す回数が決まっている場合に用いるステートメントと、回数が決まっておらず、指定した条件を満たすまでは何度でも繰り返すステートメントの2種類あります。

《あらかじめ回数が決まっている場合》

これはレコードの数だけ繰り返す場合などが当てはまります。

For カウンタ変数 = 初期値 To 終値 (Step 加算値)
繰り返す処理
Next

※カウンタ変数とは、普通の変数です(データ型は数値)。ただ、ループ処理では、繰り返す回数を入れる変数が必要になるので、その回数を入れる変数を慣例上カウンタ変数と呼んでいます。

※「(Step 加算値)」は省略できます。デフォルトでは加算されるのは1です。そうでない場合だけ、Stepで指定します。

Dim i as Long
For i = 1 to 10
MsgBox i
Next

 → 1,2,3,・・・と10回メッセージボックスに表示されます。

《要素の数だけ繰り返す》

繰り返し処理を、配列や同じオブジェクトのコレクションの各要素に対して行いたいときに使用します。

For Each 要素変数 In 配列orコレクション
  繰り返す処理
Next
※要素変数とは配列を一時的に格納する変数です。各要素が順番に格納されることで要素の数だけ処理が繰り返されます。よって、Forステートメントと違い、回数を具体的に指定しなくて済むわけです。

※要素変数のデータ型は配列のときはVariant型、コレクションのときはVariant型またはオブジェクト型です。

Dim arrHairetu(9) As String
Dim YousoHensu As Variant
Dim i As Long

For i = 0 To 9
arrHairetu(i) = i
Next

For Each YousoHensu In arrHairetu
MsgBox YousoHensu
Next

 → Forステートメントで、配列arrHairetuの各要素に0~9までの数字を格納します。

次のFor Each文で、配列arrHairetuの各要素が自動的にYousoHensuに格納され、一回一回処理されます。

《条件を満たしている間だけ繰り返す》

繰り返す処理を回数で指定するのでなく、条件を指定して、その条件が満たされている間、ずっと繰り返したいときに使用します。

Do While 条件式
繰り返す処理
Loop

《条件を満たすまで繰り返す》

繰り返す処理を回数で指定するのでなく、条件を指定して、その条件が満たされるまで、ずっと繰り返したいときに使用します。

Do Until 条件式
繰り返す処理
Loop
フォーム/レポートの参照

《フォームの参照》

Forms("フォーム名")
Forms!フォーム名
Forms![フォーム名]
Forms.フォーム名

《レポートの参照》

Report("レポート名")
Report !レポート名
Report ![レポート名]
Report .レポート名(作成中)