• ベストアンサー

AccessVBAで「dim dbs as database」がエラーになる

済みませんが、非常に基本的なことを聞かせていただきたいと思います。 AccessのVBAで関数を実行すると、いきなりエラーになりました。 dim dbs as database の文でエラーになり、「コンパイルエラー ユーザ定義型が定義されていません」というエラーメッセージが出ました。 databaseが定義されているような感じです。 どうすれば宜しいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 VBEの画面のメニューの[ツール]→[参照設定]で、 「Microsoft DAO X.X Object Library」(X.Xはバージョン) の項目にチェックが入っていますか? ちなみに、DatabaseオブジェクトはDAOしかないのでいいですが、Recordsetオブジェクトなどは、ADOとDAOの両方にあるので、 Dim rs As DAO.Recordset のように、どちらかを明確に記述しないといけません。 統一的で分かりやすいコーディングのためには、Databaseオブジェクトも、 Dim dbs As DAO.Database のように記述するように心がけましょう。

sky777
質問者

お礼

ありがとうございます! OKになりました!

その他の回答 (1)

noname#4564
noname#4564
回答No.1

メニューバーより、[ツール] - [参照設定]を開き、 「Microsoft DAO 3.6 Object Library」にチェックを入れましょう。 なお、 > dim dbs as database  Dim dbs As DAO.Database とライブラリ名で修飾して定義した方がベターです。

sky777
質問者

お礼

ありがとうございます! OKになりました!

関連するQ&A

  • DATABASE型について

    ACCESSプロジェクトを使っています。  (基本的な理解不足だと思いますが) Access97では、 Dim DB As Database Dim RS As Recordset と宣言して Set DB =CurrentDb() Set RS=DB.OpenRecordset(… で使えていましたが、Accessプロジェクトでは使えません。 (ストアドプロシージャ部分ではなく、フォームのVBA部分で) フォーム上のボタンから、モジュール操作を実行したいのですが、 上記 そのまま使用すると 「コンパイルエラー ユーザー定義型は定義されていません」 と出てきます。 Accessプロジェクトで操作するにはどのようにすればいいのでしょうか?

  • MSAccess で database定義されていない?

    Accessでレコードのデータを読もうと標準モジュールに次のプログラムを作りました Option Compare Database Public longTATENO As Long Public longYOKINO As Long Public Sub no_gen() Dim dbs As database Dim RS As Recordset Set dbs = CurrentDb Set RS = dbs.Openrecordset("M_基本情報") longTATENO = RS![立替処理No] longYOKINO = RS![預金処理No] End Sub 別のフォームを開くときに no_gen と書きそのフォームを開くと dbs As database の所が反転表示になり コンパイルエラー  ユーザ定義型は定義されていませんと出ます。 何が悪いのでしょう? Access初心者ですよろしくお願いします

  • アクセスでDATABASEの表示がされない

    アクセス2000を使用しています。 初歩的質問かと思いますが、以前、アクセスのプログラム(アクセス97など)で dim dbs as database set dbs=currentdb のような記述をして何も問題なかったのですが、 ちょっとアクセスを操作しようとして dim dbs as でDATABASEが表示されません。(ちなみに表示されるのはdで始まるのはdataaccesspageが最初です) 何が問題でどうすれば良いかご教示下さい。 よろしくお願いします。

  • Access2002 VB がエラー

    Access2002 VBで以下のコーディングをしてます Dim db As Database Dim rs As Recordset Dim fld As Field Set db = CurrentDb Set rs = db.OpenRecordset("ConvertChar") これを実行するとdb宣言行で以下のエラーが表示されます。 コンパイルエラー: ユーザ定義型は定義されていません。 これは何が原因でエラーとなるのでしょうか? 宜しくお願いします。

  • VBAで変数定義のコンパイルエラーの解消

    VBAでOutlookのメールを自動作成するコードをネットで探して実行したら最初の『Dim OutlookAP As Outlook.Application』のところで『コンパイルエラー:ユーザ定義型は定義されていません。』というメッセージが出て止まってしまいます。Outlookは起動してからVBAを実行しています。VBAの初心者です。この解消方法を教えて頂きたいので、よろしくお願いいたします。

  • Access2000のVBAでコンパイルエラー

    Access2000のVBAで初歩的な質問があります。 「tblShi」というテーブルがあります。 フォームにボタン「btn1」を作り、 デザインビューでボタンのプロパティを開いて イベントのクリック時のところで、 「ビルダの選択」をコードビルダにしました。 そして「Private Sub btn1_Click()」の中に、最初に   Dim db As Database という記述をしています。 このフォームを開いてボタンを押すと、なぜか   コンパイルエラー   ユーザ定義型は定義されていません というエラーが表示されてしまいます。 たしかにコードを書いているときに、   Dim db As のところまで入れると、小さいウィンドウの中に たくさん候補が表されますが、 その中に「Database」というのがないです。 「QueryDef」とか「Workspace」とかもありませんでした。 (「Recordset」はありまして、それはコンパイルが通ります) いろいろな解説を見ても、やはり最初はどれも 「Database」型を宣言しているようなんですが… 何がよくないのでしょうか。 もしわかる方がいらっしゃったら教えてください。

  • エクセルからアクセスへ

    お世話になります。 エクセルからVBAでアクセスのテーブルに レコードを追加させたいのですが、 下記の記述でいきなり mydb as database の所が 青く塗られ 「コンパイルエラー:ユーザー定義型は定義されていません」 とエラーになってしまします。 また、databaseのdが小文字なのも気になります。 参照設定での項目チェックが必要なんだと思うのですが どこにチェックしたら良いのか、またそれだけではダメなのか 分かりません。 どなたかご教授下さい。     記 Dim mydb As database Dim myrs As Recordset Dim myrnge As Range Dim myrow As Long

  • AccessVBAでユーザー定義関数使用

    エクセルVBAで、以下のユーザー定義関数(選択したセルaを全て3乗した和を求める)を使用していますが、アクセスVBAで同様の関数を使用するにはどうしたらよいでしょうか? ★アクセスVBVで実行したいプログラム 実行すると"データテーブル"の"Aフィールド"を全て3乗した和をmsgboxで表示 ★エクセルで使用していたユーザー定義関数 ’-------------------------------------- Function y(a As Range) As Variant Dim r As Range Dim result As Variant For Each r In a result = result + r.Value ^ 3 Next y = result End Function ’-------------------------------------- ぞうぞよろしくお願い致します。

  • AccessでのSQL文

    AccessでSQL文を使おうと思うのですが、 Dim mydb as Database とすると、ユーザ定義型は定義されていません とエラーになります。 また、mydb as と打つと変数の方の一覧が出ますがその中にもDataBaseがありません。 サンプルの家計簿を開いてみるとSQL文を使っているのにエラーは出ません。 ヘルプを見てみるとDAOが関係しているようなのですが良くわかりません。 AccessでDatabase型を使うにはどうすればいいのでしょう。 教えてください。 Access2000です。

  • アクセス97のVBAが2000で使えません。

    ACCESS97で問題なく動いていたVBAなのですが、ACCESS2000では「ユーザー定義型は定義されていません。」というエラーとなって動きません。 ソースで言うと、 Dim DB As Database というような変数宣言の部分でいきなり出てきます。 Database型がユーザー定義型と認識されているようですが、何故こうなってしまうのでしょう? またどのようにすればこの問題を解消できるでしょうか? また97と2000でのコーディング上の変更点などは、どこで調べるのが分り易いでしょうか?

専門家に質問してみよう