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

このQ&Aのポイント
  • VBA初心者です。変数にフォームからの入力値は入るのですが、データシートビューが正常に表示されない問題が発生しています。クエリの該当部分がオカシイか、テキストボックスのコントロールソースに問題がある可能性があります。
  • また、印刷ボタンをクリックした際に「型が一致しません」というエラーが発生しています。おそらく、変数の型が一致していないためにエラーが発生していると思われます。ご教授いただける方がおられましたら、ご回答をお願いします。
  • 修正中のコードの改善点や、データシートビューが表示されない問題への対処方法についてもアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

「変数にフォームからの入力値は入るのですが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) 上記、「型が一致しません」となってしまいました。 お分かりになる方でおみえならご教授下さい。

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

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

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

>データシートビューを開く クエリビルダのメニューバー「表示(V)」の中に 「データシートビュー(S)」があるので、これを クリックします。 因みにSQLビューも同メニューバー内にあります。 >「型が一致しません」 stdocnameのデータ型、repoのデータ型の どちらかがおかしいのですが、99%後者です。 Dim repo As Reports になってませんか?

ttgk
質問者

お礼

分かりにくい説明で申し訳ありません。

ttgk
質問者

補足

>データシートビューを開く クエリビルダのメニューバー「表示(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

関連するQ&A

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

    変数にフォームからの入力値は入るのですが。 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)

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

    変数にフォームからの入力値が入らない。 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(続き)。」 >データシートビューを開く クエリビルダのメニューバー「表示(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 ※.「お礼をすると終わってしまうみたいですね、申し訳ありません。」

  • VBAでサブフォームに自動的にデータを入力したい。

    VBAでサブフォームに自動的にデータを入力したい。 メインフォームに[工期自][工期至]フィールドがあります。 サブフォームに[請求予定日]フィールドがあります。 メインとサブは[管理No.]フィールドで繋がっています。 メインフォームの"請求"テキストをクリックすると、サブフォームが開きます。 そこで[工期至]フォーカス喪失時に、自動で[請求予定日]が入るようにしようと思います。 工期の期間中、毎月月末が請求予定日になります。 [工期自]の入力が無い場合は[工期至]の月の月末のみ請求になります。 下記のようなプロシージャを書いてみましたが、結果、データが全く入りません。 ADO(←まだ全く分かりません)というのを使わないとできないでしょうか? すいませんごちゃごちゃしてますが宜しくお願いします! Private Sub 工期至_Exit(Cancel As Integer) Dim SEIKYU As Date Dim TUKI As Integer Dim SYURYO As Integer DoCmd.OpenForm "サブ", acFormDS, , "管理No.='" & Me!管理No. & "'", acFormEdit If IsNull(Forms!サブ!請求書発行) Then If IsNull(Me.工期自.Value) Then SEIKYU = Me.工期至 TUKI = Month([工期至]) Else SEIKYU = Me.工期自 TUKI = Month([工期自]) End If SYURYO = Month([工期至]) + 1 Do Until TUKI = SYURYO Forms!サブ!管理No. = "[forms]![メイン]![管理No.]" Forms!サブ!請求書発行 = DateSerial(Year(SEIKYU), Month(SEIKYU) + 1, 0) SEIKYU = DateAdd("m", 1, SEIKYU) TUKI = Month(SEIKYU) Loop DoCmd.CLOSE acForm, "サブ" End If End Sub

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

    リストボックスに値をセットする場合。 月のリストボックスと日のリストボックスとロットマークのリストボックスがあり、 月の選択から周期を決定し、日を選択すると、決定された周期と日をもとにして、 ロットマークが決定(値の代入)されるのですが、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" : : :

  • vbaレポート名の指定が間違っている!。

    vbaレポート名の指定が間違っている!。 stdocnameの中身も確認しました。 でも下消又は上消の処理へ行くと上記エラーが表示されます。 この文のReports!stdocname!直線103.Visible = True書き方がおかしいようです。 どなたかご指南いただけますでしょうか。 よろしくお願い致します。 '*** stdocname(判定で指定されたレポート)を仮に開く DoCmd.OpenReport stdocname, acViewPreview '*** 消線の種類で印刷処理選択/消無は通常印刷 ---> 消線と月消を判定 If Forms!メイン画面![リストDELSEN] = "下消" Then GoTo SetLowerLine End If If Forms!メイン画面![リストDELSEN] = "上消" Then GoTo SetUpperLine End If GoTo Insatumae '*** 下消処理 SetLowerLine: Reports!stdocname!直線103.Visible = True Reports!stdocname!直線104.Visible = True Reports!stdocname!直線105.Visible = True Reports!stdocname!直線106.Visible = True Reports!stdocname!直線107.Visible = True '*** 下消時の月消処理(00は処理しない) Format ("00") ii = Forms!メイン画面![テキストDELTUKI] If ii = "00" Then Else Reports!stdocname!("直線A" & "ii").Visible = True Reports!stdocname!("直線B" & "ii").Visible = True Reports!stdocname!("直線C" & "ii").Visible = True End If GoTo Insatumae '*** 上消処理 SetUpperLine: Reports!stdocname!直線103.Visible = True Reports!stdocname!直線104.Visible = True Reports!stdocname!直線105.Visible = True Reports!stdocname!直線106.Visible = True Reports!stdocname!直線107.Visible = True '*** 上消時の月消処理(00は処理しない) Format ("00") ii = Forms!メイン画面![テキストDELTUKI] If ii = "00" Then Else Reports!stdocname!("直線A" & "ii").Visible = True Reports!stdocname!("直線B" & "ii").Visible = True Reports!stdocname!("直線C" & "ii").Visible = True End If GoTo Insatumae '*** 印刷前処理 Insatumae:

  • VB.net 変数を動的にできませんか?

    わかる方ならすぐに回答いただけるものなのかもしれませんが 初心者でよろしくお願いします。 ActiveReportを使って帳票を作成しています。 質問自体は直接的に関係がないかもしれません。 ---------------------------------------- Dim report01 As New rptList() Dim report02 As New rptList() Dim report03 As New rptList() 'レコードがあれば印刷 If xxx.Count <> 0 Then report01.Run() End If If xxx.Count <> 0 Then report02.Run() End If If xxx.Count <> 0 Then report03.Run() End If 'ドキュメントマージ report01.Document.Pages.AddRange(report02.Document.Pages) report01.Document.Pages.AddRange(report03.Document.Pages) p.Export(report01.Document, m_stream) ---------------------------------------- データがあったものだけを印刷し、 最終的にマージして1つの帳票として出すのですが、 「データがあったとき」だけなので 最後のマージの部分のマージ元になる帳票名と (今はreport01です) あと追加する帳票が動的に変化してしまいます。 これを解決するためにはどうしたらよろしいでしょうか? やることは簡単なのにできない自分がいます。 よろしくお願いします。

  • うまく処理されません(ACCESSのVBA)

    イベント事業を管理するデータベースを作っています。 メインのテーブルを表示するフォームから、チェック(Yes/No型)された項目だけを抽出したクエリ「記事抽出」があります。 ここから、「行事名」「会場」「月1」「日1」という各フィールドのデータを以下のコードのように変数に代入していきたいのです。 チェックした数が少ないときはうまくいくのですが、20個くらいチェックすると、ループの途中で抜けてしまいます。このとき、エラーメッセージは表示されません。 原因として考えられることがあればお教えください。 説明が不足しているようでしたら、補足のほうで説明したいと思いますのでよろしくお願いします。 Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim i As Integer Dim gyouji(50) As String '行事名 Dim kaijyou(50) As String '会場 Dim tuki1(50) As Integer '月1 Dim nichi1(50) As Integer '日1 Set cnn = CurrentProject.Connection i = 0 With rst    .Open "記事抽出", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect    Do Until .EOF      gyouji(i) = !行事名      kaijyou(i) = !会場      If IsNull(!月1) Then        tuki1(i) = 0      Else        tuki1(i) = !月1      End If      If IsNull(!日1) Then        nichi1(i) = 0      Else        nichi1(i) = !日1      End If      .MoveNext      i = i + 1    Loop    .Close End With cnn.Close

  • access レコードソースを選択し、DoCmd.OpenFormする方法

    Select Caseのフレームで、レコードソース(クエリ)を選択し、 そのソースを基にDoCmd.OpenFormする方法がわかりません。 よろしくお願いします。 ---------------------------------------------------- Dim strSource As String Dim Q1, Q2 As String Dim stDocName As String Dim フォーム1 As Form stDocName = "フォーム1" Q1 = "クエリ1" Q2 = "クエリ2" Select Case フレーム1 Case 1 strSource = Q1 Case 2 strSource = Q2 End Select 'stDocName.RecordSource = strSource '-----この文はこの位置でよいのでしょうか? DoCmd.OpenForm stDocName, acFormDS ---------------------------------------------------- クエリ1,クエリ2は基になるテーブルが違いますが、フィールドは同一にしてあります。 ですのでフォーム1には、対応するテキストボックスは用意してあります。

  • ACCESSフォームフィルタで抽出したデータのみをレポートで表示する方法

    フォームフィルターでデータを抽出した後,抽出されたデータのみをレポート上に表示させるコマンドボタンをフォーム上に作っています。 下記のコードを作成しましたが,これだと抽出前の全部のデータが表示されてしまいます。 どうしたら良いでしょうか。 Private Sub ラベルプレビュー_Click() Dim stDocName As String DoCmd.Echo False, stDocName = "rpt宛名ラベル" DoCmd.OpenReport stDocName, acViewDesign DoCmd.SelectObject acReport, stDocName, False ' Reports(stDocName).RecordSource = Me.RecordSource DoCmd.OpenReport stDocName, acViewPreview End Sub

専門家に質問してみよう