Access VBA実行時エラー2465

このQ&Aのポイント
  • Access VBA初心者がマクロを使って注文書とBar Code Labelを発行したいがエラー2465が発生している。
  • 注文書ごとに複数の品目と枚数があり、VBを使用して一気に発行したいがうまくいかない。
  • 実行時エラー2465が発生し、フォーム名のフィールドが見つからないというエラーメッセージが表示される。
回答を見る
  • ベストアンサー

Access VBA 実行時エラー2465

Access VBA初心者です。マクロを使ったAccessは数年やっています。現在はAccess2010。次のこ とを教えてください。 1. 注文書発行と同時にBar Code Labelを発行します。注文ごとに数品目。品目ごとに枚数を指定 ましす。 2. 例えば、注文書ID 256 に対し、品番101 100枚品番102 200枚品番103 300枚としま す。通常は10品目ぐらいを同時に発注します。(1枚ずつの発行であればクエリとマクロで処理が 可能ですが、それぞれ複数枚を発行するにはVBが必要と思いトライしています) 3. クエリ注文書ソースの発注量の5%Up分をラベル枚数としています。 4. これをソースとする「Form品番と枚数」を作っています。 5. また、「Table品番仮置」を作り 6. 追加クエリで各品番ごとに必要枚数と同じ個数の品番を、「Table品番仮置」に入れます。 7. クエリで、「Table品番仮置」と「商品詳細」とを紐付けLabelソースクエリを作ります。 8. 一気に全自動としようとしましたがうまくいかなにので、第一段階として、各品番ごとに、「Form 品番と枚数」に作ったボタンを押すと「Table品番仮置」に必要枚数が入るように設定し、次の品番 にフォームを合わせた後に又ボタンを押すこととしました。(うまくいけば次にフォームを自動で送 る設定にします) 9. この設定に次のコードをボタンに付けましたが、実行時エラー2465・・・が表示され止まっていし まいます。 「 j = Form!仕注ラ143申込コ送りフォーム!箱ラベル枚数」の部分が黄色くなり「実行時 エラー'「フォーム名」’フィールドが見つかりません。」となります。どうすればよいか教えてくださ い。 Option Compare Database Private Sub コマンド6_Click() Dim i As Integer i = 1 j = Form!仕注ラ143申込コ送りフォーム!箱ラベル枚数 Do i = i + 1 DoCmd.OpenQuery "仕注ラ212箱申込コ仮置テに追加" Loop Until i > j End Sub

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

下記でどうでしょう。 --- Forms![仕注ラ143申込コ送りフォーム]![箱ラベル枚数].value

関連するQ&A

  • フォームのデータシートビューにてVBAで直接記述したSQL文を実行した結果を返すことは不可能でしょうか?

    リストボックス、コンボボックスなら Private Sub Form_Open(Cancel As Integer) With Form_フォーム1.リスト2 .RowSourceType = "Table/Query" .RowSource = "SELECT テーブル.フィールド, FROM テーブル" End With End Sub で結果を返すことは可能なのですが フォームをデータシートとして Private Sub Form_Load() Me.RowSourceType = "Table/Query" Me.RowSource = "SELECT テーブル.フィールド, FROM テーブル" End Sub とするのは不可能ですか? これを実行すると 「コンパイルエラー メソッドまたはメンバーが見つかりません」 となり、 「RowSourceType =」が選択されます。 そしてVBAの停止の意の四角ボタンを押すとユーザーフォームが図のようになります。 私のやりたいことは、クエリではなくVBAでSQL文を書き、データシートビューで表示させたいのですがやはり不可能でしょうか? (変数を代入できるため) 何でもいいのでご教授よろしくお願いします。

  • MSアクセスでフォームからテーブル結合させたい

    製品マスタデータテーブルとオーダーテーブルがあります。 クエリで2つのテーブルを結合し表示させるのは簡単なのですが、 個々の注文データをフォームから作成するやり方がわかりません。 品番が共通項になっていて、フォームに品番を入力すると、製品マスターテーブルを参照して対応する品名や寸法を表示させたいのです。どこをどうすればよいのでしょうか?クエリにおける INNER JOINをイメージしています。 その後、その他もろもろの注文データに必要な項目を入力し、保存させればおしまいです。 クエリをベースにフォームを作成しましたが、それではフォームからの変更や追加ができません。 よろしくお願いします。

  • ACCESS VBA クエリを開く

    ACCESS初心者です。 VBAはEXCELで独学した程度の知識です。 フォームから受注納期を入力し、クエリを抽出。 クエリでレコード毎に製品票の印刷枚数を計算し レポートで各レコード毎に求められた印刷枚数分を 印刷させたいのですが・・・ クエリを開く段階でつまずいており困っています。 Private Sub コマンド23_Click() Dim db As DAO.database Dim rs As DAO.Recordset Dim qdf As DAO.QueryDef Set db = CurrentDb() Set qdf = db.QueryDefs("受注クエリ") With qdf .Parameters("納期") = Format(Forms![受注データ一覧]![納期], "yyyy/mm/dd") Set rs = .OpenRecordset .Close End With MsgBox rs![注文番号] rs.Close End Sub パラメータクエリの開き方、上記コードで問題ないでしょうか? そしてこのコードを実行した際 実行時エラー3421 データ型の変換エラーが発生しましたと表示されます。 ローカルウィンドウで 変数rs = nothingとなっており クエリのレコードが読み込めていないようです。 (Msgbox rs!注文番号はデータが読み込めたかテストするために コードを書いています。) どうぞ宜しくお願いいたします。

  • VBAで

    会社で毎日現品札というものを発行するのですが、電卓で計算しながら発行しており非常に時間がかかるので1回或いは2回の印刷でできないかとおもい質問させていただきました。 やりたい内容は下記のイメージです。 シートに18梱包分を入力できるようにしてあり、ユーザーフォームにテキストボックスが11から28まで(18梱包分)配置されていて、ここに一括で1梱包数(450や192など)を入力する。※これはできています。 'コマンドボタン2を押すと1梱包数を一括で入力する Private Sub CommandButton2_Click() Dim item As String, i As Long item = TextBox29.Text For i = 11 To 28 Me.Controls("TextBox" & i).Text = item Next i End Sub 次にラベル14に総数(例えば28000)が表示されており、ラベル11には18梱包分の合計(450*18=8100)が表示されています。※450や192はテキストボックス29にシートのAG2から設定してあります。 で、ラベル18に何を何部印刷すればいいか表示したいです。 例えば、「8100を3部と3700を1部印刷してください」となってほしいです。 1梱包数450や192などを下回る総数の場合もあります。 ユーザーフォームに他にもテキストボックスやラベルが配置されています。 よろしくお願いいたします。

  • Access VBA クエリパラメーターについて

    Access VBA についてご質問させていただきます。 AccessVBAにてフォームを起動したときに、ユーザーで作成したクエリにおいて各クエリのデータ件数を取得するプログラムを作成いたしました。 '各クエリの件数をカウントする処理 Public Sub Data_Count() 'カウント用変数を宣言して、初期化する Dim i, j As Integer: i = 0: j = 11: b = 0: Dim rs As Recordset: Dim str(1) As String Dim Fname As Form: Set Fname = Forms!F99_メイン Dim mydb As Database: Set mydb = CurrentDb 'クエリ名・エクセル名用配列を初期化する Erase QName: Erase EName: Erase Count 'クエリの数だけ繰り返す For Each myqer In mydb.QueryDefs If Left(myqer.name, 1) = "Q" And Left(myqer.name, 3) <> "Q0_" Then 'クエリ名用変数の要素数を変更し、クエリ名を格納する ReDim Preserve QName(i): QName(i) = myqer.name 'エクセル用変数の要素数を変更し、エクセルファイル名を格納する ReDim Preserve EName(i): EName(i) = QName(i) & ".xlsx" '件数用配列の要素数を変更する ReDim Preserve Count(i) 'クエリを開く Set rs = CurrentDb.OpenRecordset(QName(i)) 'クエリのレコードが0件の場合 If rs.EOF Then 'クエリの件数を保存する Count(i) = 0 'クエリのレコードが1件以上の場合 Else 'クエリの最終行に移動してクエリ件数を保存する rs.MoveLast: Count(i) = rs.RecordCount End If End If rs.Close i = i + 1 End If Next End Sub 上記のコードを実行してみたところ、ユーザーで作成したクエリを開く際に、 実行時エラー'3061':パラメーターが少なすぎます。1を指定してください。というエラーが発生してしまいました。 どのように修正すればよろしいでしょうか?

  • Access VBAのイベント共有について

    こんにちは。 初めて質問をさせて頂きますcimappleと申します。よろしくお願いいたします。 現在、業務にて使用するデータベースをAccessにて作成しておりまして、VBAにてフォームの各処理を記述しています。 ちなみに、当方Access、VBAについて超初心者ですので、そもそもの誤解がある部分もあるかと思いますが、ご容赦ください。 さて、質問の内容ですが、今回フォーム上にある14個のラベルを、マウスカーソルが乗った時(MouseMoveイベント)にそのラベルの背景色を変えるコードを組みたいと考えています。 現状としては、それぞれのラベルのMouseMoveイベントに背景色を変えたり、戻したりといったコードを記述していますが、当然非効率かつ面倒なのです。 そこで、このイベントを共有化したいと考え、いろいろと検索したところ、クラスモジュール(Private WithEvents)にてそういったことができそう・・・というところまでは辿り着いたのですが、その先が全く分かりません。 Excelについてのクラスモジュールの記事はたくさん見つけて、コピーペースト見よう見まででマネてはみたのですが、当然うまくいかず、そこから先に進めないでおります。 クラスモジュールについて基礎から勉強しなさいと言われればその通りなのですが、どうかお知恵をお貸し頂きたく質問させていただきました。 よろしくお願いいたします。 以下、見よう見まねの現在のコードです。 ちなみに、フォーム名はFRM1、ラベル名はそれぞれLbl○、クラスモジュール名はCLS1となっています。 Form(FRM1)のコード ======================================================= Option Compare Database Option Explicit Dim MyLbl(14) As CLS1 Private Sub Form_Load() Dim Lbl As Access.Label Dim i As Integer For i = 1 To 14 Set Lbl = Me.Controls("Lbl" & i) Set MyLbl(i) = New CLS1 Set MyLbl(i).Label = Lbl Next End Sub ======================================================= Class(CLS1)のコード ======================================================= Option Compare Database Option Explicit Public WithEvents Label As Access.Label Private Sub Label_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Label.BackColor = 225 End Sub ======================================================= 長文かつ駄文で申し訳ありませんでした。

  • access フォームの作成

    accessの初心者で只今勉強中ですが会社で受発注を一度に管理できるシステムを作れないかと奮闘しています。 まず、現時点での構成を言います。 T_商品 フィールド〔品番(英数混ざっている)〕、品名 T_受注main フィールド〔IDオートナンバー、注番、日付、〕 T_受注sub フィールド〔IDオートナンバー、注番、品番、数量〕 Q_商品反映 T_受注subの品番とT_商品の品番で品名を参照させるクエリ があります。 ここでそれぞれの受注テーブルに入力する為のサブフォームを利用したフォームを作成しました。 サブフォームに品番を入力する際に品名を確認の為だけでいいので表示させたいのですができません。商品数が300程度あるのでコンボボックスで選ぶのは大変なので避けたいのですが、直接入力もできてt_商品にあるものであると認識できるのであれば使用してもいいと思っています(一応試みはしましたが、結局表示できませんでした)。表示させたいフィールドのコントロールソースをクエリに変えてみたのですがNAME?のエラーがでています。Dlookupでも試してみましたがうまくいきませんでした。Dlookupに関してはおそらく私が式の構成方法を理解できていないからだとも思います。 根本的に間違っているのかもしれませんが、どうやって表示させればいいのか教えていただけますでしょうか?

  • Accessでデータベースを作っています。

    Accessでデータベースを作っています。 先日、こちらで質問をさせていただいて、クエリで複数のフィールドを対象にデータを検索する ことはクリアできました。 ありがとうございました。 ご指導に基づき、4つのフィールド(仮にA,B,C,D)について、クエリの抽出条件に  Like "*" & [Aを入力] & "*"  Like "*" & [Bを入力] & "*" ・・・ とそれぞれ設定してパラメータ入力を求め、4つの条件すべて、または一部のみ設定して検索し、 正しい検索結果が得られました。 今度は、検索用のフォームを作成し、フォームで入力した条件をクエリに送って、同じ結果を 得たいと思うのですが、以下の方法では正しい検索結果が出てきません。 ・フォームに検索用のボックスをA~Dまで4つ作成(ひとつはコンボボックス、あとはテキスト) ・クエリの抽出条件に、それぞれ以下を入力     Like "*" & [Forms]![Q_form(作成したフォームの名前)]!                       [A(それぞれの検索ボックスの名前)] & "*" ・フォームに「クエリの実行」のコマンドボタンを配置 パラメータで入力する代わりにフォームを使いたい、というものなのですが(パラメータ入力 よりも、コンボボックスを使って値を選ぶ方が検索する人には使いやすいかと思って)、どうしたら うまいこといきますでしょうか。。 教えてください。

  • ACCESS VBA Filterに配列を使いたい

    初めての書込みです。誤りがあれば、訂正致しますので、宜しくお願いします。 (背景) Access2003で作成したプログラムを、3年ほど使ってきました。 少しずつバージョンアップを加え、機能を増やしてきた次第です。 これまでの検索は、クエリによる抽出条件設定を行っていましたが、 入力型フィールドが2つから4つに増えるため、Is Null とlikeによる抽出条件の設定ではカバーしきれないと判断しました。 (本題) 検索結果フォームのレコードに、VBAでFilterをかけるべく頑張ってきましたが、 Loopを使う為にフィールド名を配列変数にしているところで 行き詰まってしまいました。 (やりたいこと) 検索条件 ="部署 Like '*人事*'"   'としたい。 (今の状態) 検索条件 = "部署 Like '* Form_frm_検索ボックス!部署検索 *'" 'となってしまう。 (1)コード 検索条件 = sh(i) & " Like '*" & "Form_frm_検索ボックス!" & sh(i) & "検索" & "*'" (2)データ型 Dim 検索条件 As Variant Dim sh(4) As String Dim i as integer コード、及びデータ型で、間違っている場所が分かれば、ご指導頂けないでしょうか。 宜しくお願いします。

  • AccessのVBAはコピーではだめなのでしょうか

    度々お世話になります 先日よりAccessの連番の振り方をご教示いただき何とか振れるようになりました そこで、同じAccess内に新たなフォームを作成し、同じように連番を振ろうとしました しかし、最後のアルファベット部分が順番にならず、ずーっと同じになってしまいます ≪やりたいこと↓≫ 同日の時はA~Zまで順番に振りたい(1日26件まで)、翌日はまたAから始まる ≪現状≫ ずーっと”A” ≪1番最初の質問≫ 下記のような連番を振る方法を教えてください "Eyymmdd A "E"は固定で yy(西暦2ケタ)mm(月)dd(日)A(Aから始め、同じ日だとB,C,…と最大26(Z)まで)振っていく。日が変わるとまたAから始まる 「テーブル名」連絡文書E 「クエリ名」連絡文書Eクエリ 「フォーム名」連絡文書E 「フィールド名」管理番号(テキスト型) E110105 A E110130 A E110130 B E110130 C E110202 A… と"E"を固定 yy(西暦2ケタ)mm(月)dd(日)Aから始まり、同日であればB,C~と 日が変わるとAからまた始まるという連番をふりたいです ≪ご教示いただいた回答≫ Function getNewSeq()   If Format(Date, "yymmdd") = Mid(DMax("管理番号", "連絡文書E"), 2, 6) Then     If Right(DMax("管理番号", "連絡文書E"), 1) = "Z" Then       MsgBox "Zまで一杯です"       Exit Function     End If     getNewSeq = "E" & Format(Date, "yymmdd") & " " & _           Chr(Asc(Right(DMax("管理番号", "連絡文書E"), 1)) + 1)   Else     getNewSeq = "E" & Format(Date, "yymmdd") & " " & "A"   End If End Function さらに、フォームでも デザインビューでフォームのプロパティのイベントの、「レコード移動時」に Private Sub Form_Current() If Me.NewRecord Then Me!管理番号 = getNewSeq End If End Sub 今回、VBAとフォームのプロパティはご教示いただいたもの(上記)をコピーしました 「テーブル名」一般文書D 「クエリ名」q_一般文書Dクエリ 「フォーム名」一般文書D2 「フィールド名」発行番号(テキスト型) としたので、 ”管理番号”を”発行番号” ”連絡文書E”を”一般文書D” ”E”を”D” としてみました 新規レコードに移る度に”D111107(yymmdd)A”となります ”A”をB、C~となる方法をぜひご教示下さい 長々とすみません 何卒よろしくお願いいたします