• ベストアンサー

[Access97]フォーム上のボタン操作でチェックボックスにチェックが入るようにしたい

Accessでテーブルを元にしていない単独のフォームを作っています。 クエリで抽出条件をパラメータで入力させるのと同様に、日付を入力してレポートをプレビュー表示させるためのフォームです。 集計表を作成するレポートの名前が入ったチェックボックスがフォームにあり、クリックひとつですべてのチェックボックスにチェックを入れるボタンを設置しています。 (画面図:例) (キャンセルなし集計ボタン)(キャンセルあり集計ボタン) □報告書集計 □キャンセルあり報告書集計 □記録集計  □キャンセルあり記録集計 (キャンセルボタン) (レポート出力ボタン) 上図の左のふたつにはデフォルトでチェックが入っています。 キャンセルあり集計ボタン ・クリックすると右の2つにもチェックが入る。 キャンセルなし集計ボタン ・クリックすると右の2つのチェックが取れる。 これら2つの処理はVBAで Me!報告書キャンセルチェック.Value = True 等としていますが、「プロパティクリック時でエラーが発生しました」となり、うんともすんとも動きません。 レポート出力ボタン ・クリックするとそのときにチェックが入っている集計レポートをプレビュー表示する。ただしキャンセルあり~にチェックがある場合はそのすぐ左の集計は出力しない。 これもVBAで If Me!報告書チェック.Value = True And Me!報告書キャンセルチェック.Value = True Then DoCmd.OpenReport "報告書集計表(キャンセルあり)" ElseIf Me!報告書チェック.Value = True Then DoCmd.OpenReport "報告書集計表" End If 等としてますが、やはりエラーが出ます。 VBが間違ってるのか、設定を変えてもそれをフォーム上に視覚的に反映させてないからか、それともソースとなるテーブルがないからでしょうか?

  • momoo
  • お礼率62% (51/81)

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

  • ベストアンサー
noname#1296
noname#1296
回答No.2

>>やはりエラーが出ます。  何というエラーが出るかがわからないと想像できませんよ。自分も特にコードにおかしいものは見当たりません。 Me!○○ ↓ Me.○○ とした方が候補がリストで出て来るので、コントロール名のミスなどがあればすぐわかると思います。 >>それともソースとなるテーブルがないからでしょうか?  これは関係ないです。  フォームの「更新の許可」プロパティは「はい」になっていますか?

momoo
質問者

補足

回答ありがとうございます。 フォームのプロパティの設定を以下に示します。 フォームのプロパティ(ピクチャ等デザイン的なものは略・設定値のあるもののみ) フィルタの使用 はい 既定のビュー 単票フォーム ビュー設定 フォーム/データシート 更新・削除・追加の許可 (すべて)はい データ入力用 いいえ レコードセット ダイナセット レコードロック しない レコードセレクタ・移動ボタン いいえ Tabキー移動 すべてのレコード キーボードイベント取得 いいえ タイマ間隔 0 コード保持 はい その他略した設定 スクロールバー・区切り線・サイズ自動修正・自動中央寄せ・ ポップアップ・作業ウィンドウ固定・境界線スタイル・ コントロールボックス・最大化/最小化ボタン・?ボタン・ X軸・Y軸グリッド数・プリンタフォント・高速レーザー印刷 これでもまだ原因が特定できないでしょうか? よろしくお願いします。

その他の回答 (5)

noname#89342
noname#89342
回答No.6

>Me![報告書(EE・FF)キャンセルチェック].Value = True >Me![報告書(EE・FF)チェック].Value = True これを Me("報告書(EE・FF)キャンセルチェック").Value = True Me("報告書(EE・FF)チェック").Value = True と変更してやってみてください。コントロールの名前にかっこは 使わない方が良いと思います。 それから、Me.Refresh は要らないと思います。

momoo
質問者

お礼

回答ありがとうございます。 yanmaaさんのおっしゃる「日本語より英数字」だけでなく、 カッコも使わない方がいいんですか。 わかりました。次に作るデータベースからは、 このことを頭に入れておきます。 (そういえば、オフィシャルマニュアルでも、フォーム名とか コントロール名は全部英数字だけだったなー) Me.Refreshをはずしましたが、動きは同じでした。 Me("XXYYZZ")という表現もあるんですね。 本を読むか、ヘルプで調べておきます。

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.5

確認ですがこっちはAccess2000なので違うかも知れませんが「コントロール名」?では無く「名前」だと思うのですが名前が「AAAAAAキャンセルチェック」だというのですか? なお、コントロールソースの設定は関係ないですよ。 また、名前は日本語を使うより英数の方が良いでしょう。 更に、「参照設定」(OCXやDLL等)の設定が間違っているという事も無いですか? Access2000の為詳しいメニューパスはご勘弁を!! ついでに Me!AAAAAAキャンセルチェック.Value = True は Me!AAAAAAキャンセルチェック = True と書いてもOK また、プログラムを1行にして(残りの行はコメントアウト)動作確認をしてみると良いでしょう。 エラーが無ければ次の1行と言う風にする。

momoo
質問者

お礼

アドバイスありがとうございます。 お返事が遅くなってすいません。 はい、名前が「AAAAAAキャンセルチェック」という類になっています。 こちらはAccess97です。だからかもしれませんが、 「参照設定」というのが何のことかはわかりません。 メニューパスというのもわかりません。ごめんなさい。 金曜日にフォームのプロパティで「データ入力用」というのを 「いいえ」から「はい」に変更してみると、作動してくれました。 そして今日それをまた「いいえ」に戻してみましたが、 正しく動いてくれています。 名前等は依然として日本語混じりで、そのままです。 結局何が原因だったのかつかめずじまいとなりました。 しかし、英数のほうがよいというアドバイスはありがとうございます。 やっぱりコンピュータの世界ではアルファベットのほうが パソコンにはわかりやすいんですよね。

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.4

困っているようなのでエラーが出ている所のソースを提示してください。 なお見られて困る内容は伏字で結構です。 あと、ソース(プログラム)を表示して「デバック」-「コンパイル」を実行すればエラーがある場所が分かると思います。 回答がないという事は状況理解出来ないとか、回答できないからだと思うのでもう少し噛み砕くとか詳細に説明するとかを試みるべきですよ。 適当な改行を入れるとかするよ読みやすくなります。

momoo
質問者

補足

アドバイスありがとうございます。 ソースはこんな感じです。 Private Sub 全帳票キャンセルありボタン_Click() Me!AAAAAAキャンセルチェック.Value = True Me!報告書キャンセルチェック.Value = True Me![BBBBBBBBキャンセルチェック].Value = True Me![CCCDDDD試験票キャンセルチェック].Value = True Me![変更届キャンセルチェック].Value = True Me![報告書(EE・FF)キャンセルチェック].Value = True Me!AAAAAAチェック.Value = True Me!報告書チェック.Value = True Me![BBBBBBBBチェック].Value = True Me![CCCDDDD試験票チェック].Value = True Me![変更届チェック].Value = True Me![報告書(EE・FF)チェック].Value = True Me.Refresh End Sub (AAAAAA,BBBBBBBB,CCCDDDD,EE,FFは伏字) コントロール名を[]でくくったりはずしたりして試みましたが、 同じエラーが出ました。 詳細にコードを示したり説明したいのはやまやまですが、 質問文は800字までしか書けないので、ある程度は省くか、 もしくはこのように補足で説明するしかないんです。 ご承知置き下さい。 コントロールソースとなるテーブルがないのは、関係ないのでしょうか?

noname#1296
noname#1296
回答No.3

すみません、エラー内容がかかれてますね。失礼しました。 コントロール名は、もう一度確認してみた方がいいかもしれません。

momoo
質問者

お礼

おかげさまで今日(11/19)解決しました。 VBAに原因がわからないので、CHOROLYNさんのアドバイスをもとに プロパティをあたりました。 「データ入力用」の設定を「いいえ」から「はい」に 変えると、なぜか作動しました。 今日、またそれを「いいえ」に戻してみましたが、 正常に動いております。 結局何が原因だったのかつかめずじまいです。 ポイントについてですが、解決の糸口になった プロパティをいじる考えを与えてくれたのはCHOROLYNさんなので、 「良回答」にいたします。 VBの記述の仕方に原因があったかもわかりませんが、 私が解決にいたるにあたって、もっとも早くその方向性へ導く アドバイスをしていただいたので。 次点は、yanmaaさんに差し上げます。 「じゃ、結局こういうことだったのかな」という説明したがりそうな 方がいらっしゃるかもしれないので、今週末(11/23)まで 締めきらずに置いておきます。 23日の夕方に締めきりますので、補足、主張したい等のある方は それまでにカキコお願いします。

回答No.1

特別おかしなコードはないようですが・・・ とりあえずコントロール名を[]で括って見てください。 以前、コントロール名やフォーム名に全角文字を使っている場合に []で括らないとエラーが出た記憶が有ります。

momoo
質問者

補足

回答ありがとうございます。 一応コードを示します。 Private Sub 全帳票キャンセルありボタン_Click() Me!AAAAAAキャンセルチェック.Value = True Me!報告書キャンセルチェック.Value = True Me![BBBBBBBBキャンセルチェック].Value = True Me![CCCDDDD試験票キャンセルチェック].Value = True Me![変更届キャンセルチェック].Value = True Me![報告書(EE・FF)キャンセルチェック].Value = True Me!AAAAAAチェック.Value = True Me!報告書チェック.Value = True Me![BBBBBBBBチェック].Value = True Me![CCCDDDD試験票チェック].Value = True Me![変更届チェック].Value = True Me![報告書(EE・FF)チェック].Value = True Me.Refresh End Sub (AAAAAA,BBBBBBBB,CCCDDDD,EE,FFは伏字) []でくくったりはずしたりして試みましたが、同じ結果になりました。

関連するQ&A

  • Accessのコード入力

    アクセス初心者です。 レポート内の検索結果を再びレポートで表示したいため、フォームのコードで下記のようにしたのですが、フォームで前後の文字を入れなくても検索できるようにするにはどのようにしたら良いでしょうか。 (テーブルなどで検索する時の、*a* のような感じです) DoCmd.OpenReport "R1", acViewDesign Reports!R1.FilterOn = True Reports!R1.Filter = "[a]='" & Me.テキスト1.Value DoCmd.OpenReport "R1", acViewPreview 宜しくお願い致します。

  • access2000で作成したVisual Basicがaccess2007で使えないのはなぜ?

    教えてください。 access2000で作成したVisual Basicがaccess2007で使えないのです。 フォームにボタンを設定し、(1)(2)ボタンをクリックすればイベントを行う機能にしました。 (1)検索  DoCmd.OpenReport "レポート名", acViewPreview, "フィールド名" (2)印刷  DoCmd.OpenReport "レポート名", acViewNormal, "フィールド名" もちろんセキュリティオプションでコンテンツを有効にしています。 なぜか、関連付けされていないオブジェクトにフォームが入っています。 2000ではできるのに、なぜか2007ではできません。 どうしてでしょうか。教えていください。

  • accessフォームのボタン→レポートへ伝票番号

    access初心者です。 accessのフォームがあります。 コマンドボタンを押すとその伝票番号★を引き継いで、レポートの★の部分に入れたいのですが。 【コマンドボタン】 DoCmd.OpenReport "伝票印刷", acPreview #「伝票番号」という変数に番号は入っています。 【レポート伝票印刷】 Sub Report_Open(Cancel As Integer) Me.RecordSource = "SELECT * FROM 仕分伝票 WHERE 伝票番号 = ★" End Sub #★に番号が入るとレポートはその番号のレポートを表示します。 #切り貼り作成しているので、ほとんどVBAはわかっていません。 #質問の仕方も自信なし。 #画面に表示されている伝票を印刷しようというのが目的です。

  • チェックボタンを利用した印刷をしたい。

    チェックボタンを利用した印刷をしたい。 MS Accessでの質問です。 宜しくお願いします。 (印刷フォーム)     X支店  Y支店 A氏   □   □ B氏   □   □ C氏   □   □ ・    ・   ・ ・    ・   ・ ・    ・   ・ [印刷]←コマンドボタン チェックボタンを利用した印刷ですが、コードは Private Sub コマンド14_Click() Me.Requery If X支店.Value = -1 Then DoCmd.OpenReport "R_個人データ1", acViewPreview End If If Y支店.Value = -1 Then DoCmd.OpenReport "R_個人データ2", acViewPreview End If End Sub としてあります。レポートはX支店用とY支店用の個人データ(書式が違う)の2種類があります。 印刷のボタンでそれぞれのレポートの印刷をしたいのです。 ただ問題がありまして、A氏のチェックボタンをはずとその列がうまく表示出きません。 (印刷フォーム)     X支店  Y支店 A氏   ■   ■ B氏   ■   □ C氏   □   ■ ・    ・   ・ ・    ・   ・ ・    ・   ・ [印刷]←コマンドボタン この状態だと、A氏(X支店,Y支店)、B氏(X支店)、C支店(Y支店)の表示がされますが、 (印刷フォーム)     X支店  Y支店 A氏   □   ■ B氏   ■   □ C氏   □   ■ ・    ・   ・ ・    ・   ・ ・    ・   ・ [印刷]←コマンドボタン この状態だと、A氏(Y支店)、C支店(Y支店)の表示がされ、B氏のX支店は表示されない。 (印刷フォーム)     X支店  Y支店 A氏   □   □ B氏   ■   □ C氏   □   ■ ・    ・   ・ ・    ・   ・ ・    ・   ・ [印刷]←コマンドボタン この状態だと、何も表示されません。 良き解決法を教えて頂けないでしょうか?

  • Access コマンドボタンからの印刷

    Access2003を使用し、フォームにコマンドボタンを追加して、そのボタンからレポートの印刷を行なおうとしています。 印刷ダイアログボックスを表示し、直前で印刷のキャンセルもできるようにと下記のように記述しました。 Private Sub 印刷1_Click() On Error GoTo Err_印刷1_Click '[印刷]ダイアログボックスを表示した後、印刷 DoCmd.SelectObject acReport, "レポート1", True DoCmd.RunCommand acCmdPrint DoCmd.OpenReport "レポート1", acViewNormal '正常終了処理 Exit_印刷1_Click: Exit Sub 'エラー発生時 Err_印刷1_Click: Select Case Err.Number Case 2501 Exit Sub Case Else End Select End Sub しかし、これを実行し、印刷すると、なぜか2部印刷されます。 どうやら2回処理が実行されているようです。 また、試しに印刷ダイアログボックスで通常使用しないプリンタを選択してみたら、選択したプリンタから1部、通常使用のプリンタから1部出力されてしまいました。 初心者なもので原因がわからず困惑しております。 どなたか解決方法のご教授お願い致します。

  • Access2003のフォームからレポートに変数を渡したいのです。

    Access2003のフォームからレポートに変数を渡したいのです。 フォームに「結果」という名前の非連結コンボボックスがあり、値集合ソースは、「"承認";"却下";"保留"」です。 フォームの印刷ボタンはクリック時のイベントに以下を設定しています。 DoCmd.OpenReport ("R_レポート名"), acViewPreview このレポートでテキストボックスに「結果」の内容を表示させたいと思います。 テキストボックスのコントロールソースに、「=[Forms]![F_フォーム名]![結果]」と入れてみましたがエラーになります。 フォームのコンボボックスの値をレポートで表示させるにはどうすれば良いのでしょうか。 ご教示ください。よろしくお願いいたします。

  • チェックボックスについて

    こんにちは。 フォームで「個人別状態」が「成約済み」の時に チェックボックスにチェックがつくようにしたいのですが、 動作しません。 どこが間違っているのでしょうか。。。 Private Sub チェック31_Click() If Me.個人別状態 = "成約済み" Then Me.チェック31.Value = False Else Me.チェック31.Value = True End If End Sub

  • ACCESS フォームの操作

    下記のようなことが可能であれば、方法をご教授願います。 まず、構造 フォーム2つ 1.メニュー…コマンドボタン2つ(BT11とBT12) 2.メイン  …コマンドボタン3つ(BT21とBT22とBT23) やりたいことは、 BT11とBT12のクリックイベントでどちらもメインフォームを表示 ただし、 BT11クリック時はacFormAddでメインフォーム上にBT21、BT23だけを表示し、 BT12クリック時はacReadOnlyメインフォーム上にBT22、BT23だけを表示 です。 フォームの表示は出来ましたが、 コマンドボタンの表示/非表示が切り替わりません。 sub BT11_Click() 1行目 DoCmd.OpenForm "フォーム名", acNormal, , acFormAdd, acDialog 2行目 Forms!メインフォーム!BT21.Visible = True end sub BT11をクリックしたときは、1行目でとまっているようです。 メインフォームを閉じるときに2行目を実行しようと するようで、メインフォームがないというエラーがでます。 宜しくお願い致します。

  • 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

  • access2000表形式フォームから単票形式フォームで開きなおす方法

    access2000でDBをつくっています 表形式フォームのNoフィールドをダブルクリックして、クリックしたレコードのみを 単票形式フォームで開く。ということをしたいのですが、 表形式フォームのほうに Private Sub   No_DblClick(Cancel As Integer) DoCmd.OpenForm "単票形式", acNormal, , [No] = Me![No].Value, , acDialog End Sub とVBAを書いているのですが、 Noの値が3のところをクリックしてもNo=1のレコードが先頭に開けてしまい、 望むような結果が得られません。 本3,4冊調べてもよくわからないので、 アドバイスお願いします。

専門家に質問してみよう