• ベストアンサー

access VBA記述の基本を教えてくれる本

yastak2006の回答

回答No.1

マイクロソフトのチュートリアルをこなすのが一番手っ取り早く覚えられるのではないでしょうか?どのバージョンにもサンプルが載っているはずです。 そのサンプルをメモ帳やエクセルにまとめて置いて、使いたいロジックをコピーすると速く作れますよ。 変数や定数などは書き換えなければ動きませんが、初心者には良い勉強になるでしょう。 プロでも一からロジック書くのは面倒なので、部品として重要なところは使いまわしてます。 実績のある物には頼りたいですからね。

PearlJam69
質問者

補足

ご回答ありがとう御座います。 しかし、私の知りたい事は その事を「まとめて書いてある本又は、サイト」です。 勉強したいのです。 今のところ、Microsoft Access Clubや、この教えてGooを参照して コピペして作ってはいます。

関連するQ&A

  • access VBA SQLの記述について

    access VBA SQLの記述について (下記は私の作成したものではありません) -------------------------------------------- 'IDの取得 myID = [Forms]![フォーム]![ID] '削除クエリ SQLstr = "DELETE FROM テーブル WHERE ID = " & myID DoCmd.RunSQL SQLstr -------------------------------------------- 一応この記述で、問題なく動作しているんです。 「" & myID」の部分は、なぜは正しいのでしょうか? 「" & myID & ""」でないといけないと思っていました。 「&」で囲い、 さらにそれを「”」で囲い、 「&」の前後は半角スペースを挿入する。 という記述のみが正しいと思っていたのですが・・・? また、こういう点の総括した正しい情報はどこで学べますか?

  • Access VBA フィルター

    Microsoft Access のVBAで、メインフォームで条件を設定するとサブフォームがフィルターされて開くというVBAを作っています。 SQL文を「SQLCode」という文字列型変数に入れました。 具体的には以下の内容がSQLCodeに入っています。 [担当者]=[Forms]![検索]![担当者] この変数をフォームにフィルターをかけて開くコードに入れたいのですが、以下の?の部分を教えてください。 Me!Fサブフォーム.Form.Filter. = ? Me!Fサブフォーム.Form.FilterOn = True

  • access vbaのコンパイルエラーについて

    お世話になります。 vbaは超初心者なので、説明が良くないかもしれませんがご容赦ください。 フォーム上のレコード数を一件に制限する必要があり、下記サイトを参考に作成中のデータベースに構文をあてはめてみました。 http://hatenachips.blog34.fc2.com/blog-entry-189.html サブフォーム移動時のプロシージャは、 Public Sub Form_Current() Me.AllowAdditions = Me.Recordset.RecordCount < 1 End Sub メインフォーム移動時の動作として、対象のサブフォーム名を入れて下記のような構文を 作りました。 Private Sub Form_Current() Me.新規入力 サブフォーム.Form.Form_Current End Sub ところが、「コンパイルエラー 変数が定義されていません」となってしまいました。 サブフォームコントロール名はデザインビューのプロパティで、タブの「すべて」の名前の欄にあるものだと思っているのですが、もしかしてこれが違っているのでしょうか? エラーの意味がよくわからず、困り果てています。 どなたかお力をお貸しください。 よろしくお願いします。

  • VBAの記述の中で半角スペースで区切らなければいけない時、区切ってはい

    VBAの記述の中で半角スペースで区切らなければいけない時、区切ってはいけない時を教えてください。 以下は参考書のとうりに記述しました。 ------------------------------------- Sub 分割() 氏名 = Range("A2").Value 姓 = Left(氏名, 2) 名 = Mid(氏名, 4, 10) Range("B2").Value = 姓 Range("C2").Value = 名 End Sub ------------------------------------- ・氏名 = Range ・Left(氏名, 2) ・姓 = Left ・名 = Mid ・氏名, 4, 10 半角スペースは無しで記述を入力したのですが 上記の    = の前後と   2 と 4 と 10 の前に 勝手に半角スペースが入りました。 試しに Range("C2")の Range と ("C2") の間に半角スペースを入れようと Range ("C2")とすると 強制的に排除され Range("C2") に戻されました。 試しに 氏名 = Range("A2").Value の「.Value」の前に半角スペースを入れて 氏名 = Range("A2") .Value としたら記述が赤字になって エラーメッセージが出ました。 試しに Range("B2").Value = 姓 の Range の部分でRとaの間に半角スペースを入れて  R ange と記述したら確定されました。 (強制的に戻らないのでしょうか?  またエラーメッセージが出ないのでしょうか?) 1.記述の中で半角スペースを入れなければならない所。 2.記述の中で半角スペースを入れてはいけない所。 3.入力してはいけない所に半角スペースを入力した場合エラーと表示される時。 4.入力してはいけない所に半角スペースを入力した場合エラーと表示してくれない時。 5.半角スペースが必要な部分に自動で入力してくれない時。 6.半角スペースが必要な部分に自動で入力される時。    上記4種類の定義を教えていただきたいです。 NO.4とNO.5は実害があります。 NO.3とNO.6は実害はないのですが理屈を知らないので、 NO.1とNO.2を知っていないと駄目ではと思いました。 参考書では見当たりませんでした。 わかりやすいサイトがあったら教えていただけるとありがたいです。 お願いします。

  • VBAで作成したSQL文がエラーになる

    SQL=”SELECT ;”(1000文字超えるため省略) Public Const Tbl名 As String = "Tサイト" Form_データシート.RecordSource = SQL Form_データシート.タイトル.ControlSource = "" & Tbl名 & ".タイトル" と、VBAでSQL文を作成しフォームのレコードソースに代入していますが 先ほどまで正常に動いていたのですが いきなり「プロパティの設定値として指定した値が不正です」とエラーになってしまいます。 しかし Debug.Print SQL でSQL文をクエリに貼り付けてデータシートビューで見ることは可能です。 クエリでは大丈夫なのにVBAではエラーになる場合 どこを確認すればいいでしょう? よろしくお願いします。

  • ACCESS VBAサブフォーム(DATA SHEET)の値の取得方法

    いつもお世話になっております。 ACCESS VBAでメインフォームに貼りついているサブフォームの値をとりたいのですが、うまくいっていません。 現状は module1でaをPublicで宣言 サブフォーム中のFORM_CURRENT()中で me.field1.setfocus a = me.field1.value として取得しています。 (実装ではメインのほうのボタンAを押したときに サブフォーム、FORM_CURRENT()で取得しておいた値を 別の変数に入れようとしています。) サブフォームのみで実行するとうまくいくようですが、 メインフォームに貼り付けるとうまくいかないようです。 (メインフォームに貼り付けて、サブフォームのFORM_CURRENTにブレイクを 貼って止めようとするが止まらない) そこでメインフォームボタンAクリックイベントで dim a1 as integer Forms![mainform]![subform].form.[field1].setfocus a1 = Forms![mainform]![subform].form.[field1].value として値をとろうと思ったのですが メインフォームからサブフォームにフォーカスをうつせない? らしく、サポートされていませんの旨のメッセージがでてしまいます。 やりたいこととしては、メインフォームに貼りついたサブフォームの 選択レコードのフィールド値を、メインフォームのボタンを押したときに 取得する。ということなのですが、うまくいっていません。 別の方法でもいいので、実現方法をご存知の方、よろしくお願いします。 ちなみにACCESSは2000を使用、ADOはサポートされていますがDAOは 非サポートのようです。

  • Access2010のVBAにて(変数の宣言)

    Access2010にて複数のフォーム内で、「sql」という変数を宣言しています。 宣言例) Dim sql As String (sql は小文字) それが、あるときを境に、全て「SQL」となってしまいました。 一括置換でプロジェクト内の全ての「SQL」の宣言箇所を 小文字の「sql」に変換してみたのですが、置換作業が終わった直後に やはり大文字の「SQL」に戻ります。 特にこれといって動きに支障があるわけではないのですが、 他の変数の宣言を小文字で統一している事もあり、気になります。。。 なお、Accessでオブジェクト名を間違えて半角カナなどで 一度宣言してしまうと、その後オブジェクト名を修正しても、 VBAコード内では半角のオブジェクト名が自動補完されてしまいますよね。 これと同じような現象でしょうか。 これはAccessのバグになるのでしょうか。 それとも修正方法があるのでしょうか。 修正方法や対策をご存じの方は教えて頂けませんでしょうか。 宜しくお願い致します。

  • Accessの式ビルダにて

    サブフォームのあるフォームを作成しました。 その際に、サブフォームにて作成した非連結コントロールを参照するコントロールをメインフォームに作成しようとしましたが、その際に式ビルダを利用しました。 通常は[サブフォーム名].Form![フィールド名]と出る所が[サブフォーム名].フォーム![フィールド名]と表示されエラーが表示されました。 つまり英字でFormと表示されるところがカタカナで表示されてきたんです。 今までこんなことはなかったので、いろいろホームページを検索したのですが、原因がわかりません。 なぜ、カタカナで表示されてきたのでしょうか?

  • アクセスVBAのSQLについて

    (1)テキストファイルに記述したSQL文のセットをVBAで実行するコマンドはありますか? (2)テーブルを作成する際の、DB指定は 「create table "DB名"."テーブル名"…」としたらよいでしょうか (3)"DB名". を省略できるのはどのような場合ですか? (4)Docmd.RunSQL "" で一度に複数のSQL文を実行できますか? よろしくお願いします。m(_ _)m

  • vba(Access2003)の記述情報

    こんばんは。 遅くに質問失礼します。 只今、Access2003のvbaを記述しており、エラーが出て困りましたので質問いたしました。 初歩的な事かと思うのですがご指導下さいませ。 AccessのフォームにテキストボックスA、テキストボックスB、テキストボックスC、作成し、フォームロード時に編集ロックをしたいと思います。 ※------------------------------ Me.AllowEdits = False とか プロパティの編集ロック はい/いいえ を利用しない方法を探しています。 -------------------------------- 現在vbaの記述は Private Sub Form_Load()  Dim Tbox As Variant  Tbox = Array("テキストボックスA", "テキストボックスB", "テキストボックスC")  Dim i As Integer  For i = LBound(Tbox) To UBound(Tbox)   [Tbox(i)].Locked = True ★  Next i End Sub を記述すると★行にエラーが発生します。 勉強のため色々ためしてみました。 試(1)…For文を外し短文で [テキストボックスA].Locked = True とした場合には問題なくロックできました。 試(2)…For文を外し短文で [Tbox(0)].Locked = True とした場合にはエラー。 試(3)…変数内確認のため MsgBox Tbox(0) とした場合「テキストボックスA」と出ます。 試(4)…For文を外し短文で [ & Tbox(0) & ].Locked = True や [ + Tbox(0) + ].Locked = True 試しましたがエラー・・・(当たり前でしょうが、、、 試(5)…googleで『vba [] 文字列 結合』等色々調べましたがあまり良い例に辿り着けず、、、 ご教授いただければ幸いです。 何卒、宜しくお願い致します。