変数にフォームからの入力値は入るのですが。

このQ&Aのポイント
  • VBA初心者がフォームからの入力値を利用してレポートを印刷しようとしていますが、レポート上で項目がエラーになってしまいます。どこが悪いのでしょうか?
  • フォームからの入力値が変数には正しく入っているのに、レポート上で項目がエラーになってしまいます。初心者なのでわかりません。助けてください。
  • VBA初心者です。フォームからの入力値をレポートに印刷しようとしていますが、項目がエラーになってしまいます。何が悪いのでしょうか?助けてください。
回答を見る
  • ベストアンサー

変数にフォームからの入力値は入るのですが。

変数にフォームからの入力値は入るのですが。 VBA初心者です。下記コードを書きました。 フォームからの入力値をレポート印刷しようとしています。 MSGBOXで内容を参照したところ、変数の内容は入っています。 入っているのですが、レポート上、項目が#Errorになってしまいます。 どこが悪いのでしょうか?。 お分かりになる方でおみえならご教授下さい。 Option Explicit '共通変数の宣言 Dim stdocname As String Dim repo As Report Dim delt As String Dim kmsg As String        :        :        : Private Sub 印刷_Click() On Error GoTo Err_印刷_Click '*** 変数の宣言 Dim tuki As String Dim mais As Integer Dim denp As Integer Dim busu As Integer Dim joge As String Dim kmsg As String '*** 変数に入力値をセット mais = 0 delt = Forms!メイン画面![リストDELTUKI] joge = Forms!メイン画面![リストJYOGEDAN] tuki = Forms!メイン画面![リストTUKI] denp = Forms!メイン画面![テキストSBAN] busu = Forms!メイン画面![テキストEBAN] '*** 消し月と印刷月重複不可チェック If delt = tuki Then GoTo Err_印刷月_Click End If '*** 上段・下段使用と対象月から使用レポートを判定 Select Case joge & tuki Case "上段" & "1" stdocname = "レポート01上" Case "上段" & "2" stdocname = "レポート02上" Case "上段" & "3" stdocname = "レポート03上"        :        :        : Case "下段" & "10" stdocname = "レポート10下" Case "下段" & "11" stdocname = "レポート11下" Case "下段" & "12" stdocname = "レポート12下" Case Else stdocname = "レポート原稿" End Select kmsg = MsgBox(joge & tuki & stdocname)

  • ttgk
  • お礼率100% (38/38)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

前にも回答したと思うけど、レポートのレコードソースと、 レポート内のテキストボックスのコントロールソースが ミスマッチしているか、演算エラーになっています。 (1)画面を開き、条件を設定する。 (2)レポートをデザインビューにし、レコードソースの所で   クエリビルダを起動(…のボタンをクリック) (3)クエリビルダで、データシートビューを開く。 データシートビューに#Errorの欄があるようなら、クエリの 該当部分がオカシイので、クエリのSQLを提示してください。 (クエリビルダで、SQLビューを開くと表示される) データシートビューが正常に表示されている場合は問題の テキストボックスのコントロールソースを提示してください。 それと、未だ変なコーディングしてますね。 Dim 月 As Long '漢字の変数名OK、数値はLong型の方が良い 月 = Val(tuki) If (joge = "上段" Or joge = "下段" ) And _   月 >= 1 And 月 <= 12 Then     stdocname = "レポート" & Format(月, "00") _              & Left(joge, 1) Else     stdocname = "レポート原稿" End If Select Case ~ End Select は削除

ttgk
質問者

お礼

ありがとうございます。 あれから色々とやってはみましたが。 いまいち良く分からず困っております。 ただ、ご親切に説明して頂きありがとうございます。 もう少し見直して(特に漢字ですよね)みます。

関連するQ&A

  • 変数にフォームからの入力値が入らない。

    変数にフォームからの入力値が入らない。 VBA初心者です。下記コードを書きました。 フォームからの入力値をレポート印刷しようとしています。 MSGBOXで内容を参照したところ、JOGEしか入っていませんでした。 どこが悪いのでしょうか?。 お分かりになる方でおみえならご教授下さい。 Option Explicit '共通変数の宣言 Dim stdocname As String Dim repo As Report Dim delt As String Dim kmsg As String        :        :        : Private Sub 印刷_Click() On Error GoTo Err_印刷_Click '*** 変数の宣言 Dim tuki As String Dim mais As Integer Dim denp As Integer Dim busu As Integer Dim joge As String Dim kmsg As String '*** 変数に入力値をセット mais = 0 delt = Forms!メイン画面![リストDELTUKI] joge = Forms!メイン画面![リストJYOGEDAN] tuki = Forms!メイン画面![リストTUKI] denp = Forms!メイン画面![テキストSBAN] busu = Forms!メイン画面![テキストEBAN] '*** 消し月と印刷月重複不可チェック If delt = tuki Then GoTo Err_印刷月_Click End If '*** 上段・下段使用と対象月から使用レポートを判定 Select Case joge & tuki Case "上段" & "1" stdocname = "レポート01上" Case "上段" & "2" stdocname = "レポート02上" Case "上段" & "3" stdocname = "レポート03上"        :        :        : Case "下段" & "10" stdocname = "レポート10下" Case "下段" & "11" stdocname = "レポート11下" Case "下段" & "12" stdocname = "レポート12下" Case Else stdocname = "レポート原稿" End Select kmsg = MsgBox(joge, tuki, stdocname)

  • 「変数にフォームからの入力値は入るのですが2。」

    「変数にフォームからの入力値は入るのですが2。」 VBA初心者です。 以前のご回答ありがとうございます。 (1).画面を開き、条件を設定する。     →初期値設定ぐらいしかやっていません。 (2).レポートをデザインビューにし、レコードソースの所でクエリビルダを起動。 (3).クエリビルダでデータシートビューを開く     →クエリビルダまで行けるのですが、データシートビューを開くがありません。 (4).データシートビューに#Errorの欄があるようなら、クエリの     該当部分がオカシイので、クエリのSQLを提示してください。      (クエリビルダで、SQLビューを開くと表示される)     データシートビューが正常に表示されている場合は問題の     テキストボックスのコントロールソースを提示してください。     →データベースのクエリを見てもクエリは無いようです。      データシートビューは(レポート?)#Errorで表示されています。 ※.他の方が作られたものを修正している為、いまいち把握できていません。 Private Sub 印刷_Click() On Error GoTo Err_印刷_Click '*** 変数の宣言 Dim tuki As String Dim mais As Integer Dim denp As Integer Dim busu As Integer Dim joge As String Dim kmsg As String '*** 変数に入力値をセット mais = 0 delt = Forms!メイン画面![リストDELTUKI] joge = Forms!メイン画面![リストJYOGEDAN] tuki = Forms!メイン画面![リストTUKI] denp = Forms!メイン画面![テキストSBAN] busu = Forms!メイン画面![テキストEBAN] '*** 消し月と印刷月重複不可チェック If delt = tuki Then GoTo Err_印刷月_Click End If '*** 上段・下段使用と対象月から使用レポートを判定 Dim 月 As Long 月 = Val(tuki) If (joge = "上段" Or joge = "下段") & (月 >= 1 & 月 <= 12) Then stdocname = "レポート" & Format(月, "00") & Left(joge, 1) Else stdocname = "レポート原稿" End If kmsg = MsgBox(joge & tuki & stdocname) '*** stdocname(判定で指定されたレポート)を仮に開く DoCmd.OpenReport stdocname, acViewPreview '*** レポートのセット Set repo = Reports(stdocname) 上記、「型が一致しません」となってしまいました。 お分かりになる方でおみえならご教授下さい。

  • 「変数にフォームからの入力値は入るのですが2(続き)。」

    「変数にフォームからの入力値は入るのですが2(続き)。」 >データシートビューを開く クエリビルダのメニューバー「表示(V)」の中に 「データシートビュー(S)」があるので、これを クリックします。 因みにSQLビューも同メニューバー内にあります。 →データシートビューを開いても何もないのですが・・・。  見ているところが悪いのでしょうか?。  レポートをデザインビューで開いて左上の■からメニューが開けますが・・・。 >「型が一致しません」 stdocnameのデータ型、repoのデータ型の どちらかがおかしいのですが、99%後者です。 Dim repo As Reports になってませんか? →Dim repo As Reportsになっています。 Option Explicit '共通変数の宣言 Dim stdocname As String Dim repo As Report Dim delt As String Dim kmsg As String Dim app As Object ※.「お礼をすると終わってしまうみたいですね、申し訳ありません。」

  • リストボックスに値をセットする場合。

    リストボックスに値をセットする場合。 月のリストボックスと日のリストボックスとロットマークのリストボックスがあり、 月の選択から周期を決定し、日を選択すると、決定された周期と日をもとにして、 ロットマークが決定(値の代入)されるのですが、IF文で記述すると値の代入は、 上手くいくのですが、SELECT文で記述すると上手くいきません。 何が悪いのでしょうか?。 どなたかご教授下さい。 [IFの時] Dim syuuki As Integer If Forms!Print![tuki] = 1 Then syuuki = 2 Else If Forms!Print![tuki] = 2 Then syuuki = 3 Else If Forms!Print![tuki] = 3 Then syuuki = 1 Else : : : If syuuki = 1 Then If Forms!Print![hi] = 1 Then Let Forms!Print![lotmark] = "A" Else If Forms!Print![hi] = 2 Then Let Forms!Print![lotmark] = "B" : : : [SELECTの時] Dim syuuki As Integer Dim tuki_hantei As Integer Dim hi_hantei As Integer Dim dummy As Integer tuki_hantei = Forms!Print![tuki] hi_hantei = Forms!Print![hi] Select Case tuki_hantei Case 3, 6, 9, 12 syuuki = (tuki_hantei Mod 3) + 1 Case 1, 4, 7, 10 syuuki = (tuki_hantei Mod 3) + 1 Case 2, 5, 8, 11 syuuki = (tuki_hantei Mod 3) + 1 End Select dummy = syuuki & hi_hantei Select Case dummy Case 1 & 1 Let Forms!Print![lotmark] = "A" Case 1 & 2 Let Forms!Print![lotmark] = "B" : : :

  • ACCESSのフォームからレポートへの変数の引渡し

    フォームで定義した変数をレポートに渡して利用したいがうまく渡せません。 具体的にはクエリー名をレコードソースとして利用するために変数に入れて渡そうとしています。 [フォーム]での変数定義 Dim 抽出種別 as String -----(1) 抽出種別 = "Q抽出未回収" -----(2) [レポート]開く時のイベントプロシージャー Private Sub Report_Open(Cancel As Integer) Me.RecordSource = 抽出種別 -----(3) End Sub 実行結果は印刷の各フィールドの項目に #Name? と表示されてしまいます。 (3)で変数を使わずに"Q抽出未回収"とやるとうまくプレビューされます。 変数の定義の方法や場所などいまいち理解が出来ていないものと思います。 フォームからレポートへの変数の引渡しはどうやってやればうまく出来るのでしょうか?

  • 変数を動的に作るには?

    変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3"      ・      ・      ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。

  • 変数

    Dim トータル As Integer トータル = 200 Dim 変数1(トータル) As Integer Dim 変数2(トータル) As Integer Dim 変数3(トータル) As Integer Dim 変数4(トータル) As Integer ※変数1~4に同じ数の変数(クローン??)を用意したいのですがエラーがでます。 このような使い方は出来ないのでしょうか? なお、VB上ではローマ字で使っています。 変数は6個ぐらいあり 毎回変えるのは面倒なので・・・ (スパイラルモデル方式??といっても使うのは私自信ですが・・・)

  • エクセルVBAでの変数

    いつもお世話になります。 今回の『壁』は”変数”です。 変数の中に更に変数を持たせることはできますか? 何をしたいかと言いますと… dim mon1 as string dim mon2 as string dim mon3 as string dim mon4 as string dim mon5 as string dim tue1 as string dim tue2 as string …というように月曜から日曜までの頭3文字プラス1~5の組み合わせの変数を作りたいのですが、 この調子で作っていくと35コになってしまいます。 そこで、曜日の頭3文字より後ろは決まって1~5のため、 dim i as integer for i = 1 to 5 next i …と組み合わせられないかと思ったのです。 どなたか知恵をお貸しください。 よろしくお願いします。

  • エクセル2000マクロエラー

    下記のマクロを記述を記載していますが Open path + finame For Input As #1→でファイルがありませんという エラーがでます。c:\aa着色加工計画\testにファイル(T_Sort.csv)はあるみたいなのですが 教えてください。何が原因でしょうか Sub Do_shukei() Dim 処方(1) As String, 品名(1) As String Dim 倉庫(1) As String Dim tuki(15) As String, sort(1) As String, st As Integer Dim sihan(8) As Long, zaiko As Long, suryo(15) As Long Dim ryo(6) As Long, a As Integer, i As Integer Dim path As String, finame As String, foname As String st = 1 a = 1 For i = 1 To 15 suryo(i) = 0 Next i path = "c:\aa着色加工計画\test" finame = "T_Sort.csv" foname = "T_shukei.csv" Open path + foname For Output As #2 Open path + finame For Input As #1 Do Until EOF(1) = True If a = 1 Then Input #1, sort(0), 倉庫(0), 処方(0), 品名(0), tuki(1), tuki(2), tuki(3), tuki(4), tuki(5), tuki(6), tuki(7), tuki(8), tuki(9), tuki(10), tuki(11), tuki(12), tuki(13), tuki(14), tuki(15) Write #2, sort(0), 倉庫(0), 処方(0), 品名(0), tuki(1), tuki(2), tuki(3), tuki(4), tuki(5), tuki(6), tuki(7), tuki(8), tuki(9), tuki(10), tuki(11), tuki(12), tuki(13), tuki(14), tuki(15) a = 0 GoTo l 下記省略

  • access vba レポートを複数部印刷

    MS-Access 2007です。 VBAでレポートを印刷しています。 2部印刷したいときはどのようにすればよいでしょうか。 現在は Dim stDocName As String stDocName = "請求書印刷" DoCmd.OpenReport stDocName, acNormal で一部印刷しています。 二回繰り返せば2枚出ますが2部としてプリンターに送りたいのです。 宜しくお願いします。

専門家に質問してみよう