ナビゲーション
FrontPage
FreeBSD
Linux
Citrix XenServer
VMware ESXi
Unixコマンド
MySQL
PostgreSQL
Windows
CMS/CRM
クラウド
用語
PHPスクリプト
Bashシェルスクリプト
Rubyスクリプト
開発日記
検索
ツールボックス
新しいページの作成
バックアップの表示
外部のリンク元
最近更新したページ
全ページ
ヘルプ
凍結
アップロード
ページ名の変更
最新の40件
2016-08-17
Linux/NagiosQL
Linux/CentOSチューニング
2016-02-23
Linux/ソフトウェアRAID復旧手順
2016-02-18
FreeBSD/DHCP
FreeBSD/squid
2016-02-15
Unixコマンド/file
2016-02-05
FreeBSD/DynaBook
FreeBSD/Linux compatibility
2016-01-21
PHPスクリプト/PEAR DBインストールできない
PHPスクリプト/PEAR DB
2016-01-20
PHP/フレームワーク/Zend Framework
PHP/フレームワーク
FreeBSD/Postfix+amavisd+clamav
2016-01-15
FreeBSD/sl
2015-12-04
Unixコマンド/dig
Unixコマンド/nslookup
Unixコマンド/traceroute
Linux/rsync
FreeBSD/rsync
Unixコマンド/vipw
2015-11-25
Linux/Postfix+MySQL+Postfix AdminによるバーチャルSMTPサーバの構築
Linux/Postfix + postgrey
2015-11-24
Linux/Postfix + amavisd + clamav
2015-05-25
Unixコマンド/ifconfig
2015-05-23
Unixコマンド/netstat
Unixコマンド/route
Unixコマンド/lsof
Unixコマンド/disown
Unixコマンド/time
Unixコマンド/crontab
2015-05-22
Unixコマンド/nohup
Unixコマンド/fgとbg
Unixコマンド/nice
Unixコマンド/kill
Unixコマンド/jobs
Unixコマンド/restor
Unixコマンド/dump
Unixコマンド/uncompress
Unixコマンド/compress
Unixコマンド/zcat
total:
4208
today:
1
yesterday:
0
now:
2
本文
ノート
?
編集
差分
一覧
AccessVBA の編集
*Access VBA [#h72cd1c3] #contents **オブジェクトの参照方法 [#ece40a6e] Forms!フォーム名 Reports!レポート名 **プロパティの参照方法 [#ea59bff0] Forms!フォーム名.プロパティ名の英語表記 Reports!レポート名.プロパティ名の英語表記 Forms!フォーム名!コントロール名.プロパティ名の英語表記 Reports!レポート名!コントロール名.プロパティ名の英語表記 ***プロパティの参照方法(例) [#rc61f59a] [F_顧客登録]フォーム上にある[cmd実行]コントロールの[標題]プロパティを参照する。 Forms!F_顧客登録!cmd.実行.Caption **主なプロパティ名 [#s2d760ec] |プロパティ|英語表記|意味| |標題|Caption|タイトルバーに表示する文字列。ラベルに表示する文字列| |レコードソース|RecordSource|レコードのデータソース| |コントロールソース|ControlSource|コントロールに表示するデータ| |可視|Visible|コントロールに表示するかどうか| |使用可能|Enabled|コントロールにフォーカスを移動できるかどうか| |値集合タイプ|RowSourceType|コンボボックスまたはリストボックスに表示するデータの種類| |値集合ソース|RowSource|コンボボックスまたはリストボックスに表示するデータ| |ソースオブジェクト|SourceObject|サブフォームのソースになるオブジェクト| **Meプロパティを利用する。 [#x6ff9a90] 参照するオブジェクトがプログラムを実行しているフォームまたはレポートの場合は Forms!フォーム名 または Reports!レポート名 の代わりに Me!フォーム名 または Me!レポート名 のように使用する事ができます。 **Option Explicit [#z22d41ca] 宣言していない変数を利用できないようにする命令 ***Option Explicitを必ず追加するには [#s7e83322] Visual Basic Editorで[ツール]⇒[オプション]⇒編集タブの「変数の宣言を強制する」にチェックしておくと、~ モジュールを作成した時に自動的にOption Explicitステートメントが追加されます。 **コントロールに値を代入する [#f1d7b0f2] [F_顧客]フォームの[顧客ID]コントロールに「100」を代入する。 Forms!F_顧客!顧客ID = 100 [F_顧客]フォームの[顧客名]コントロールに「2008/02/14」を代入する。 Forms!F_顧客!顧客名 = #02/14/2008# -日付の書式:シャープ(#)で囲んだ値は、日付または時刻データとして解釈されます。 書式 #月/日/年# **四則演算 [#k6e4f5ba] |演算子|意味|例|計算結果| |+|たし算|10 + 3|13| |-|ひき算|10 - 3|7| |*|かけ算|10 * 3|30| |/|わり算|10 / 3|3.33333.....| |\|わり算の商|10 \ 3|3| |Mod|わり算の余り|10 Mod 3|1| |^|べき乗|10^ 3|1000| **文字の連結 [#p8ce5801] &演算子を利用すると文字を連結する事ができます。~ Forms!フォーム!あいさつコントロールには「こんにちは」が代入される。 Forms!フォーム!あいさつ = "こん" & "にちは" **変数のデータ型 [#z18b1f24] 小数点を含まない値が&color(red){整数};小数点を含んだ値が&color(red){実数}; |データ型|表記|データの種類・値の範囲| |ブール型|Boolean|TureまたはFalse| |バイト型|Byte|整数(0〜255)| |整数型|Integer|整数(-32768〜32767)| |長整数型|Long|整数(-2147483648〜2147483647)| |単精度浮動小数点数型|Single|実数(-3.402826E38〜-1.401298E-45)| |~|~|実数(1.401298E-45〜3.402823E38)| |倍精度浮動小数点数型|Double|実数(-1.79769313486231E308〜-4.9406564584124E-324)| |~|~|実数(4.94065645841247E-324〜1.79769313486232E308)| |通貨型|Currency|通貨(-922337203685477.5808〜922337203685477.5807)| |日付型|Date|日付(西暦100年1月1日〜西暦9999年12月31日)| |文字列型|String|文字| |バリアント型|Variant|すべのデータの種類| *制御構造 [#a4a2e4f2] **If...Endifステートメント [#e0393c37] 書式 If 条件式 Then 実行する処理 EndIf ***If...Endifステートメント(例) [#y6cd2526] Private Sub cmd確認_Click() Dim intA As Integer intA = Me!txtA If intA >= 0 Then MsgBox "正の数" EndIf End Sub **If...Then...Elseステートメント [#fcb0c341] 書式 If 条件式 Then Trueの時の処理 Else Falseの時の処理 End If ***If...Then...Elseステートメント(例) [#jc164417] Private Sub cmd確認_Click() Dim intA As Integer intA = Me!txtA If intA >= 0 Then MsgBox "正の数" Else MsgBox "負の数" End If End Sub **If...Then...ElseIfステートメント [#y8b0dd16] 書式 If 条件式A Then 条件式AがTrueの処理 ElseIf 条件式B Then 条件式BがTrueの処理 ElseIf 条件式C Then 条件式CがTrueの処理 Else 条件式A・B・CがFlaseの時の処理 End If **条件式のAndとOr [#w74164b6] 例 変数Aの値が100〜200の場合True、それ以外はFalse If (A >= 100) And (A <= 200) Then 変数Aの値が100もしくは200の場合True、それ以外はFalse If (A = 100) Or (A = 200) Then **Select Case ステートメント [#f662c156] 書式 Select Case 変数A Case 定数1 : 変数Aの値が定数1と等しい時の処理 Case 定数2 : 変数Aの値が定数2と等しい時の処理 Case 定数3 変数Aの値が定数3と等しい時の処理 Case Else 変数Aの値が上記以外の時の処理 End Select -Caseの書き方 --値を複数指定する。 Select Case A Case ,2,3, --範囲を指定する(1から10まで) Select Case A Case 1 To 10 --範囲を指定する(AからFまで) Select Case A Case A To F ***Select Case ステートメント(例) [#m9163984] Private Sub cmd計算_Click() Dim sngAns As Single Select Case Me!txt演算 Case "+","+" : sngAns = 10 + 3 Case "-" : sngAng = 10 - 3 Case "*","*" : sngAng = 10 * 3 Case "/","/" : sngAng = 10 / 3 Case "\","¥" : sngAng = 10 \ 3 Case "Mod" :sngAng = 10 Mod 3 Case "^" : sngAng = 10 ^ 3 Case Else Beep MsgBox "演算子が間違っています" End Select End Sub **For...Nextステートメント [#scf95b2c] 書式 For カウンタ = 初期値 to 最終値 [Step ステップ] 実行する処理 Next カウンタ ***For...Nextステートメント(例) [#z2a84613] MsgBoxで0から9まで表示する。 Private Sub cmdカウンタ_Click() Dim i As Integer For i = 0 To 9 MsgBox i Next i End Sub MsgBoxで0,2,4,6,8と表示する。 Private Sub cmdカウンタ_Click() Dim i As Integer For i = 0 To 9 Step 2 MsgBox i Next i End Sub **Do...Loopステートメント [#s1cbea4c] 書式(前判断) Do {While | Until} 条件式 実行する処理 Loop 書式(後判断) Do 実行する処理 Loop {While | Until} 条件式 ***Do...Loopステートメント(例) [#fa8d3880] MsgBoxで10から一つずつ減らしながら表示する。 Private Sub cmd前判断_Click() Dim cnt As Integer cnt = 10 Do While cnt > 0 MsgBox cnt cnt = cnt -1 Loop End Sub **ループを途中で終了する処理 [#b75fb9d6] Exit For Exit Do **マクロのアクションを実行する。 [#m125b56a] 書式 DoCmd.メソッド 引数1,引数2,引数3・・・・ [[AccessVBA/メソッド>AccessVBA/メソッド]] *Visual Basicの組み込み関数を使用する。 [#u0cfff18] 書式 戻り値 = 関数(引数1,引数2,引数3・・・・・) **MsgBox関数 [#p73d3ab8] 書式 retvalue = MsgBox(prompt [, buttons] [,title] retvalue : 戻り値(Integer型). 選択したボタンを表す定数 [OK]ボタン :1 vbOK [キャンセル]ボタン :2 vbCancel [中止]ボタン :3 vbAbout [再試行]ボタン :4 vbRetry [無視]ボタン :5 vblgnore [はい]ボタン :6 vbYes [いいえ]ボタン :7 vbNo prompt :メッセージボックスに表示する文字列 buttons :(省略可能)ボタンとアイコンの種類 -ボタンの種類と個数 vbOkOnly 0 [OK] vbOkCancel 1 [OK][キャンセル] vbAbourtRetrylgnore 2 [中止][再試行][無視] vbYesNoCancel 3 [はい][いいえ][キャンセル] vbYesNo 4 [はい][いいえ] vbRetryCancel 5 [再試行][キャンセル] -アイコンの種類 vmCritical 16 警告[X] vbQuestion 32 問い合わせ[?] vbExclamation 48 注意[!] vbInfomation 64 情報[i] -デフォルトボタン vbDefaultButton1 0 第1ボタン vbDefaultButton1 256 第2ボタン vbDefaultButton1 512 第3ボタン title :(省略可能)メッセージボックスのタイトルバーに出力する文字列 *プロシージャ [#t869d6b1] 「マウスがクリックされた」「キー入力」されたなどがイベント~ プロシージャはイベントが発生した時に、自動的に実行するプログラム **ジェネラルプロシージャ [#v4d32e87] -Subプロシージャ~ そこに記述した処理を実行するだけ。処理の結果を返さないプロシージャ --書式 [Call] Subプロシージャ名[(引数1,引数2,引数3・・・)] ---例 cmdSubをクリックして、SubプロシージャCalcを実行する。 Private Sub Calc() MsgBox Me!txt! End Sub Pribate Sub cmdSub_Click() Call Calc End Sub -Functionプロシージャ~ 組み込み関数のように、処理の結果を返すプロシージャをFunctionプロシージャと呼びます。~ ※Functiionプロシージャには必ず戻り値のデータ型の宣言が必要です。 --書式 戻り値 = Functionプロシージャ名[(引数1,引数2,引数3・・・)] ---例 cmdFuncをクリックして、FunctionプロシージャCalcの戻り値を表示。 Private Function Calc() As Integer Dim intA As Integer Dim ans As Integer intA = CInt(Me!txtA) ans = intA * 2 Calc = ans End Function Private Sub cmdFunc_Click() Dim ret As Integer ret = Calc() MsgBox ret End Sub -引数の受け渡し~ cmdFuncをクリックして、Function Calcに引数を渡し戻り値を受け取る。 Private Function Calc(A As Integer, B As Integer) As Integer Dim ans As Integer ans = A * B Calc = ans End Function Private Sub cmdFunc_Click() Dim ret As Integer ret = Calc(10, 5) MsgBox ret End Sub *変数の適応範囲 [#wc563b57] **プロシージャレベル変数 [#sad23b45] Dimステートメントを使って宣言した変数は、そのプロシージャ内だけで有効です。~ プロシージャを終了すると、変数が保持していた値は破棄されます。 -例~ 下記の例ではプロシージャを実行する度にretの値が初期化さえます。~ その為、メッセージボックスは常に「1」です。 Private Sub cmd_Click() Dim ret As Integer ret = ret + 1 MsgBox ret End Sub **静的変数 [#wba5bb25] Staticステートメントを使って宣言した変数は、そのモジュールを終了するまで有効です。 -例~ 下記の例では変数retは、このフォームを閉じるまで有効です。~ その為、コマンドボタンをクリックする度に値が加算されます。 Private Sub cmd_Click() Static ret As Integer ret = ret + 1 MsgBox ret End Sub **モジュールレベル変数 [#rcb48fbb] モジュールの宣言セクションで宣言した変数は、そのモジュールに含まれるすべてのプロシージャから利用する事ができます。~ 宣言した変数はそのフォームを閉じるまで値が保持されます。 -例~ cmdとcmd2のどちらのボタンをクリックしても変数の値が増えていきます。 Option Compare Database Private ret As Integer Private Sub cmd_Click() ret = ret + 1 MsgBox ret End Sub Private Sub cmd2_Click() ret = ret + 1 MsgBox ret End Sub **パブリック変数 [#ra7e0504] データベースに含まれるすべてのプロシージャから参照する事ができます。 -例~ フォーム1のcmdとフォーム2のcmdどちらをクリックしても値が増えていきます。 'フォーム1 Option Compare Database Public ret As Integer Private Sub cmd_Click() ret = ret + 1 MsgBox ret End Sub 'フォーム2 Private Sub cmd_Click() ret = ret + 1 MsgBox ret End Sub *プロシージャの適応範囲 [#m07c13ee] 変数と同じように、プロシージャにも、それを利用できる範囲があります。 **Privateプロシージャ [#a700d614] 同じモジュールだけで利用できるプロシージャ Private Sub Sample() ・ ・ End Sub **Publicプロシージャ [#w58e0cbf] データベースに含まれるすべてのモジュールから利用できるプロシージャ Public Sub Sample() ・ ・ ・ End Sub **プロシージャを途中で終了する [#xd5740a6] 書式 Exit Subステートメント Exit Functionステートメント -例~ cmdクリック時にテキストtxtAの値がNullだった場合、「数値を入力してください」を表示。~ 値が入っていれば、2倍して表示。 Private Sub cmd_Click() Dim intA As Integer If IsNull(Me!txtA) Then Beep MsgBox "数値を入力してください" Exit Sub End If intA = CInt(Me!txtA) ret = intA * 2 MsgBox ret End Sub *デバッグとエラー処理 [#xe140525] **イミディエイトウィンドウ [#k2ac8f1c] Visual Basic Editorで [表示] - [イミディエイトウィンドウ] を選択~ イミディエイトウィンドウとは、プログラムのデバッグを行うウィンドウです。~ プログラムを実行しているときに、変数の値を確認したり、作成したFunctionプロシージャを実行したりすることができます。 **イミディエイトウィンドウに値を出力する。 [#o35e9489] 書式 Debug.Print 変数1,変数2,変数3・・・・ -例~ Private Sub cmd2_Click() Dim i As Integer For i = 0 To 9 Debug.Print i & "です。" Next i Beep End Sub **イミディエイトウィンドウでプロシージャを実行する [#q1cd76fc] -Visual Basicの組み込み関数、Functionプロシージャを実行する。 ?関数名(引数1,引数2,引数3・・・) --例 ?Time() 午前 12:00:00 -Functionプロシージャを実行する場合 ?モジュール名.プロシージャ名(引数1,引数2,引数3・・・) -[計算フォーム]フォームのクラスモジュールに作成したCalcプロシージャを実行する ?Form_計算フォーム.Calc() -マクロのアクションを実行する。~ 計算フォームを開く DoCmd.OpenForm "計算フォーム" -Subプロシージャを実行する~ イミディエイトウィンドウで実行できるのは、標準モジュールにPublicプロシージャとして作成したSubプロシージャだけです。 Sample(10,2) **プログラムを1行ずつ実行する。 [#k59fc141] コードウィンドウで [F8]キーを押すと1行ずつ実行できます。 ブレークポイントを設定した状態で実行すると、ブレークポイントの直前までプログラムを実行した後、一時中断します。 **ローカルウィンドウ [#m46ef319] ローカルウィンドウは、プログラム実行中の変数の値を表示するウィンドウです。 Visual Basic Editorで [表示] - [ローカルウィンドウ] 選択で表示できます。 **エラー処理の作り方 [#b476c25d] -エラートラップ On Error Goto ラベル 例 Public Sub フォーム開_Click() On Error GoTo フォーム開_Err 'エラートラップ DoCmd.OpenForm "顧客登録" フォーム開_Exit: '正常終了処理 Exit Sub フォーム開_Err: 'エラー処理 MsgBox Error$ Resume フォーム開_Exit End Sub **エラーの種類を調べる [#oa652c79] 書式 Err.Number Err.Description -例 MsgBox Err.Number & " : " & Err.Description **エラー処理の後にプログラムを継続する [#n4bc0ba0] Resumeステートメントは、指定した位置にプロシージャの制御を移動する処理を行います~ エラーが発生した次の行から再度プロシージャを継続するには以下の書式を利用する。~ 書式 Resume Next -例 Public Sub フォーム開_Click() On Error GoTo フォーム開_Err DoCmd.OpenForm "顧客登録" フォーム開_Exit: Exit Sub フォーム開_Err: MsgBox Err.Number & " : " & Err.Description Resume Next End Sub *ADO(ActioveX Data Object)、DAO(Data Access Object) [#w4cb5ee8] ADOとDAOはどちらもVisual Basicでデータベースを操作する為のオブジェクトです。 **ADO(ActioveX Data Object) [#q4b51550] OLE DBプロバイダを通して、AccessデータベースやSQL Server、Oracleなどいろいろなタイプのデータベースに接続するオブジェクトです。 [[AccessVBA/ADO]] [[AccessVBA/ADOX]] **DAO(Data Access Object) [#v9e04d60] Microsoft Jetデータベースエンジンを経由してAccessデータベースに接続し、データベース操作を行う為のオブジェクトです。 [[AccessVBA/DAO]] *SQLステートメントを使ったデータベース操作 [#r916041a] SQLステートメントはデータベースを操作する為の言語です。~ 特定の条件を満たすレコードだけを抽出できます。~ またたくさんのレコードを一度に編集することもできます。~ [[AccessVBA/SQLステートメントを使ったデータベース操作]] *実例集 [#dcb21679] [[AccessVBA/実例集]] *参考サイト [#g6da0623] [[http://www.feedsoft.net/access/>http://www.feedsoft.net/access/]]
タイムスタンプを変更しない
*Access VBA [#h72cd1c3] #contents **オブジェクトの参照方法 [#ece40a6e] Forms!フォーム名 Reports!レポート名 **プロパティの参照方法 [#ea59bff0] Forms!フォーム名.プロパティ名の英語表記 Reports!レポート名.プロパティ名の英語表記 Forms!フォーム名!コントロール名.プロパティ名の英語表記 Reports!レポート名!コントロール名.プロパティ名の英語表記 ***プロパティの参照方法(例) [#rc61f59a] [F_顧客登録]フォーム上にある[cmd実行]コントロールの[標題]プロパティを参照する。 Forms!F_顧客登録!cmd.実行.Caption **主なプロパティ名 [#s2d760ec] |プロパティ|英語表記|意味| |標題|Caption|タイトルバーに表示する文字列。ラベルに表示する文字列| |レコードソース|RecordSource|レコードのデータソース| |コントロールソース|ControlSource|コントロールに表示するデータ| |可視|Visible|コントロールに表示するかどうか| |使用可能|Enabled|コントロールにフォーカスを移動できるかどうか| |値集合タイプ|RowSourceType|コンボボックスまたはリストボックスに表示するデータの種類| |値集合ソース|RowSource|コンボボックスまたはリストボックスに表示するデータ| |ソースオブジェクト|SourceObject|サブフォームのソースになるオブジェクト| **Meプロパティを利用する。 [#x6ff9a90] 参照するオブジェクトがプログラムを実行しているフォームまたはレポートの場合は Forms!フォーム名 または Reports!レポート名 の代わりに Me!フォーム名 または Me!レポート名 のように使用する事ができます。 **Option Explicit [#z22d41ca] 宣言していない変数を利用できないようにする命令 ***Option Explicitを必ず追加するには [#s7e83322] Visual Basic Editorで[ツール]⇒[オプション]⇒編集タブの「変数の宣言を強制する」にチェックしておくと、~ モジュールを作成した時に自動的にOption Explicitステートメントが追加されます。 **コントロールに値を代入する [#f1d7b0f2] [F_顧客]フォームの[顧客ID]コントロールに「100」を代入する。 Forms!F_顧客!顧客ID = 100 [F_顧客]フォームの[顧客名]コントロールに「2008/02/14」を代入する。 Forms!F_顧客!顧客名 = #02/14/2008# -日付の書式:シャープ(#)で囲んだ値は、日付または時刻データとして解釈されます。 書式 #月/日/年# **四則演算 [#k6e4f5ba] |演算子|意味|例|計算結果| |+|たし算|10 + 3|13| |-|ひき算|10 - 3|7| |*|かけ算|10 * 3|30| |/|わり算|10 / 3|3.33333.....| |\|わり算の商|10 \ 3|3| |Mod|わり算の余り|10 Mod 3|1| |^|べき乗|10^ 3|1000| **文字の連結 [#p8ce5801] &演算子を利用すると文字を連結する事ができます。~ Forms!フォーム!あいさつコントロールには「こんにちは」が代入される。 Forms!フォーム!あいさつ = "こん" & "にちは" **変数のデータ型 [#z18b1f24] 小数点を含まない値が&color(red){整数};小数点を含んだ値が&color(red){実数}; |データ型|表記|データの種類・値の範囲| |ブール型|Boolean|TureまたはFalse| |バイト型|Byte|整数(0〜255)| |整数型|Integer|整数(-32768〜32767)| |長整数型|Long|整数(-2147483648〜2147483647)| |単精度浮動小数点数型|Single|実数(-3.402826E38〜-1.401298E-45)| |~|~|実数(1.401298E-45〜3.402823E38)| |倍精度浮動小数点数型|Double|実数(-1.79769313486231E308〜-4.9406564584124E-324)| |~|~|実数(4.94065645841247E-324〜1.79769313486232E308)| |通貨型|Currency|通貨(-922337203685477.5808〜922337203685477.5807)| |日付型|Date|日付(西暦100年1月1日〜西暦9999年12月31日)| |文字列型|String|文字| |バリアント型|Variant|すべのデータの種類| *制御構造 [#a4a2e4f2] **If...Endifステートメント [#e0393c37] 書式 If 条件式 Then 実行する処理 EndIf ***If...Endifステートメント(例) [#y6cd2526] Private Sub cmd確認_Click() Dim intA As Integer intA = Me!txtA If intA >= 0 Then MsgBox "正の数" EndIf End Sub **If...Then...Elseステートメント [#fcb0c341] 書式 If 条件式 Then Trueの時の処理 Else Falseの時の処理 End If ***If...Then...Elseステートメント(例) [#jc164417] Private Sub cmd確認_Click() Dim intA As Integer intA = Me!txtA If intA >= 0 Then MsgBox "正の数" Else MsgBox "負の数" End If End Sub **If...Then...ElseIfステートメント [#y8b0dd16] 書式 If 条件式A Then 条件式AがTrueの処理 ElseIf 条件式B Then 条件式BがTrueの処理 ElseIf 条件式C Then 条件式CがTrueの処理 Else 条件式A・B・CがFlaseの時の処理 End If **条件式のAndとOr [#w74164b6] 例 変数Aの値が100〜200の場合True、それ以外はFalse If (A >= 100) And (A <= 200) Then 変数Aの値が100もしくは200の場合True、それ以外はFalse If (A = 100) Or (A = 200) Then **Select Case ステートメント [#f662c156] 書式 Select Case 変数A Case 定数1 : 変数Aの値が定数1と等しい時の処理 Case 定数2 : 変数Aの値が定数2と等しい時の処理 Case 定数3 変数Aの値が定数3と等しい時の処理 Case Else 変数Aの値が上記以外の時の処理 End Select -Caseの書き方 --値を複数指定する。 Select Case A Case ,2,3, --範囲を指定する(1から10まで) Select Case A Case 1 To 10 --範囲を指定する(AからFまで) Select Case A Case A To F ***Select Case ステートメント(例) [#m9163984] Private Sub cmd計算_Click() Dim sngAns As Single Select Case Me!txt演算 Case "+","+" : sngAns = 10 + 3 Case "-" : sngAng = 10 - 3 Case "*","*" : sngAng = 10 * 3 Case "/","/" : sngAng = 10 / 3 Case "\","¥" : sngAng = 10 \ 3 Case "Mod" :sngAng = 10 Mod 3 Case "^" : sngAng = 10 ^ 3 Case Else Beep MsgBox "演算子が間違っています" End Select End Sub **For...Nextステートメント [#scf95b2c] 書式 For カウンタ = 初期値 to 最終値 [Step ステップ] 実行する処理 Next カウンタ ***For...Nextステートメント(例) [#z2a84613] MsgBoxで0から9まで表示する。 Private Sub cmdカウンタ_Click() Dim i As Integer For i = 0 To 9 MsgBox i Next i End Sub MsgBoxで0,2,4,6,8と表示する。 Private Sub cmdカウンタ_Click() Dim i As Integer For i = 0 To 9 Step 2 MsgBox i Next i End Sub **Do...Loopステートメント [#s1cbea4c] 書式(前判断) Do {While | Until} 条件式 実行する処理 Loop 書式(後判断) Do 実行する処理 Loop {While | Until} 条件式 ***Do...Loopステートメント(例) [#fa8d3880] MsgBoxで10から一つずつ減らしながら表示する。 Private Sub cmd前判断_Click() Dim cnt As Integer cnt = 10 Do While cnt > 0 MsgBox cnt cnt = cnt -1 Loop End Sub **ループを途中で終了する処理 [#b75fb9d6] Exit For Exit Do **マクロのアクションを実行する。 [#m125b56a] 書式 DoCmd.メソッド 引数1,引数2,引数3・・・・ [[AccessVBA/メソッド>AccessVBA/メソッド]] *Visual Basicの組み込み関数を使用する。 [#u0cfff18] 書式 戻り値 = 関数(引数1,引数2,引数3・・・・・) **MsgBox関数 [#p73d3ab8] 書式 retvalue = MsgBox(prompt [, buttons] [,title] retvalue : 戻り値(Integer型). 選択したボタンを表す定数 [OK]ボタン :1 vbOK [キャンセル]ボタン :2 vbCancel [中止]ボタン :3 vbAbout [再試行]ボタン :4 vbRetry [無視]ボタン :5 vblgnore [はい]ボタン :6 vbYes [いいえ]ボタン :7 vbNo prompt :メッセージボックスに表示する文字列 buttons :(省略可能)ボタンとアイコンの種類 -ボタンの種類と個数 vbOkOnly 0 [OK] vbOkCancel 1 [OK][キャンセル] vbAbourtRetrylgnore 2 [中止][再試行][無視] vbYesNoCancel 3 [はい][いいえ][キャンセル] vbYesNo 4 [はい][いいえ] vbRetryCancel 5 [再試行][キャンセル] -アイコンの種類 vmCritical 16 警告[X] vbQuestion 32 問い合わせ[?] vbExclamation 48 注意[!] vbInfomation 64 情報[i] -デフォルトボタン vbDefaultButton1 0 第1ボタン vbDefaultButton1 256 第2ボタン vbDefaultButton1 512 第3ボタン title :(省略可能)メッセージボックスのタイトルバーに出力する文字列 *プロシージャ [#t869d6b1] 「マウスがクリックされた」「キー入力」されたなどがイベント~ プロシージャはイベントが発生した時に、自動的に実行するプログラム **ジェネラルプロシージャ [#v4d32e87] -Subプロシージャ~ そこに記述した処理を実行するだけ。処理の結果を返さないプロシージャ --書式 [Call] Subプロシージャ名[(引数1,引数2,引数3・・・)] ---例 cmdSubをクリックして、SubプロシージャCalcを実行する。 Private Sub Calc() MsgBox Me!txt! End Sub Pribate Sub cmdSub_Click() Call Calc End Sub -Functionプロシージャ~ 組み込み関数のように、処理の結果を返すプロシージャをFunctionプロシージャと呼びます。~ ※Functiionプロシージャには必ず戻り値のデータ型の宣言が必要です。 --書式 戻り値 = Functionプロシージャ名[(引数1,引数2,引数3・・・)] ---例 cmdFuncをクリックして、FunctionプロシージャCalcの戻り値を表示。 Private Function Calc() As Integer Dim intA As Integer Dim ans As Integer intA = CInt(Me!txtA) ans = intA * 2 Calc = ans End Function Private Sub cmdFunc_Click() Dim ret As Integer ret = Calc() MsgBox ret End Sub -引数の受け渡し~ cmdFuncをクリックして、Function Calcに引数を渡し戻り値を受け取る。 Private Function Calc(A As Integer, B As Integer) As Integer Dim ans As Integer ans = A * B Calc = ans End Function Private Sub cmdFunc_Click() Dim ret As Integer ret = Calc(10, 5) MsgBox ret End Sub *変数の適応範囲 [#wc563b57] **プロシージャレベル変数 [#sad23b45] Dimステートメントを使って宣言した変数は、そのプロシージャ内だけで有効です。~ プロシージャを終了すると、変数が保持していた値は破棄されます。 -例~ 下記の例ではプロシージャを実行する度にretの値が初期化さえます。~ その為、メッセージボックスは常に「1」です。 Private Sub cmd_Click() Dim ret As Integer ret = ret + 1 MsgBox ret End Sub **静的変数 [#wba5bb25] Staticステートメントを使って宣言した変数は、そのモジュールを終了するまで有効です。 -例~ 下記の例では変数retは、このフォームを閉じるまで有効です。~ その為、コマンドボタンをクリックする度に値が加算されます。 Private Sub cmd_Click() Static ret As Integer ret = ret + 1 MsgBox ret End Sub **モジュールレベル変数 [#rcb48fbb] モジュールの宣言セクションで宣言した変数は、そのモジュールに含まれるすべてのプロシージャから利用する事ができます。~ 宣言した変数はそのフォームを閉じるまで値が保持されます。 -例~ cmdとcmd2のどちらのボタンをクリックしても変数の値が増えていきます。 Option Compare Database Private ret As Integer Private Sub cmd_Click() ret = ret + 1 MsgBox ret End Sub Private Sub cmd2_Click() ret = ret + 1 MsgBox ret End Sub **パブリック変数 [#ra7e0504] データベースに含まれるすべてのプロシージャから参照する事ができます。 -例~ フォーム1のcmdとフォーム2のcmdどちらをクリックしても値が増えていきます。 'フォーム1 Option Compare Database Public ret As Integer Private Sub cmd_Click() ret = ret + 1 MsgBox ret End Sub 'フォーム2 Private Sub cmd_Click() ret = ret + 1 MsgBox ret End Sub *プロシージャの適応範囲 [#m07c13ee] 変数と同じように、プロシージャにも、それを利用できる範囲があります。 **Privateプロシージャ [#a700d614] 同じモジュールだけで利用できるプロシージャ Private Sub Sample() ・ ・ End Sub **Publicプロシージャ [#w58e0cbf] データベースに含まれるすべてのモジュールから利用できるプロシージャ Public Sub Sample() ・ ・ ・ End Sub **プロシージャを途中で終了する [#xd5740a6] 書式 Exit Subステートメント Exit Functionステートメント -例~ cmdクリック時にテキストtxtAの値がNullだった場合、「数値を入力してください」を表示。~ 値が入っていれば、2倍して表示。 Private Sub cmd_Click() Dim intA As Integer If IsNull(Me!txtA) Then Beep MsgBox "数値を入力してください" Exit Sub End If intA = CInt(Me!txtA) ret = intA * 2 MsgBox ret End Sub *デバッグとエラー処理 [#xe140525] **イミディエイトウィンドウ [#k2ac8f1c] Visual Basic Editorで [表示] - [イミディエイトウィンドウ] を選択~ イミディエイトウィンドウとは、プログラムのデバッグを行うウィンドウです。~ プログラムを実行しているときに、変数の値を確認したり、作成したFunctionプロシージャを実行したりすることができます。 **イミディエイトウィンドウに値を出力する。 [#o35e9489] 書式 Debug.Print 変数1,変数2,変数3・・・・ -例~ Private Sub cmd2_Click() Dim i As Integer For i = 0 To 9 Debug.Print i & "です。" Next i Beep End Sub **イミディエイトウィンドウでプロシージャを実行する [#q1cd76fc] -Visual Basicの組み込み関数、Functionプロシージャを実行する。 ?関数名(引数1,引数2,引数3・・・) --例 ?Time() 午前 12:00:00 -Functionプロシージャを実行する場合 ?モジュール名.プロシージャ名(引数1,引数2,引数3・・・) -[計算フォーム]フォームのクラスモジュールに作成したCalcプロシージャを実行する ?Form_計算フォーム.Calc() -マクロのアクションを実行する。~ 計算フォームを開く DoCmd.OpenForm "計算フォーム" -Subプロシージャを実行する~ イミディエイトウィンドウで実行できるのは、標準モジュールにPublicプロシージャとして作成したSubプロシージャだけです。 Sample(10,2) **プログラムを1行ずつ実行する。 [#k59fc141] コードウィンドウで [F8]キーを押すと1行ずつ実行できます。 ブレークポイントを設定した状態で実行すると、ブレークポイントの直前までプログラムを実行した後、一時中断します。 **ローカルウィンドウ [#m46ef319] ローカルウィンドウは、プログラム実行中の変数の値を表示するウィンドウです。 Visual Basic Editorで [表示] - [ローカルウィンドウ] 選択で表示できます。 **エラー処理の作り方 [#b476c25d] -エラートラップ On Error Goto ラベル 例 Public Sub フォーム開_Click() On Error GoTo フォーム開_Err 'エラートラップ DoCmd.OpenForm "顧客登録" フォーム開_Exit: '正常終了処理 Exit Sub フォーム開_Err: 'エラー処理 MsgBox Error$ Resume フォーム開_Exit End Sub **エラーの種類を調べる [#oa652c79] 書式 Err.Number Err.Description -例 MsgBox Err.Number & " : " & Err.Description **エラー処理の後にプログラムを継続する [#n4bc0ba0] Resumeステートメントは、指定した位置にプロシージャの制御を移動する処理を行います~ エラーが発生した次の行から再度プロシージャを継続するには以下の書式を利用する。~ 書式 Resume Next -例 Public Sub フォーム開_Click() On Error GoTo フォーム開_Err DoCmd.OpenForm "顧客登録" フォーム開_Exit: Exit Sub フォーム開_Err: MsgBox Err.Number & " : " & Err.Description Resume Next End Sub *ADO(ActioveX Data Object)、DAO(Data Access Object) [#w4cb5ee8] ADOとDAOはどちらもVisual Basicでデータベースを操作する為のオブジェクトです。 **ADO(ActioveX Data Object) [#q4b51550] OLE DBプロバイダを通して、AccessデータベースやSQL Server、Oracleなどいろいろなタイプのデータベースに接続するオブジェクトです。 [[AccessVBA/ADO]] [[AccessVBA/ADOX]] **DAO(Data Access Object) [#v9e04d60] Microsoft Jetデータベースエンジンを経由してAccessデータベースに接続し、データベース操作を行う為のオブジェクトです。 [[AccessVBA/DAO]] *SQLステートメントを使ったデータベース操作 [#r916041a] SQLステートメントはデータベースを操作する為の言語です。~ 特定の条件を満たすレコードだけを抽出できます。~ またたくさんのレコードを一度に編集することもできます。~ [[AccessVBA/SQLステートメントを使ったデータベース操作]] *実例集 [#dcb21679] [[AccessVBA/実例集]] *参考サイト [#g6da0623] [[http://www.feedsoft.net/access/>http://www.feedsoft.net/access/]]
テキスト整形のルールを表示する
ログインまたはアカウント作成