フォームで、ウンザードを使用し、テーブルを表形式で作成した場合

 チェック No. 氏名 判別
     1 相田
     2 飯田

とある場合、対象データのみチェックボタンに"レ"を入れた時に
判別項目に印刷を行う方法を教えて頂けませんか?

チェックボタンにコードを書く時に、データの何番目にチェックを
しているかを計算する関数があったと思いますが
どうしても思い出せません よろしくお願い致します。
 

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>印刷区分を0:印刷しない 1:印刷する と出来るでしょうか?



IIF関数を使うのが簡単でしょう。
=IIF([印刷区分]=true,"印刷する","印刷しない")
    • good
    • 0

>チェックボタン(チェックボックス)とは、非連結です。


>その時にリストボックスのように、選択をした場所はわからないのでしょうか?

フォームの動きを見ると、表形式のフォームに、非連結のコントロールを置くと
どのレコードの値を変更しても、全てのレコードに反映されます。
すなわち、コントロールで、どのレコードかを特定するのは無理だと思います。

例えば、表形式フォームのテキストボックスの背景を特定のレコードだけ変えたい
と思ったとき、
Me!テキスト1.何番目.BackColor=RGB(255, 255, 0)
と指定したいところですが、こんな指定の仕方はありません。

Me!テキスト1.BackColor=RGB(255, 255, 0)
を実行すると、全てのレコードの背景が黄色になってしまいます。
こんな場合は、条件付き書式を使いますよね?

通常、印刷済み(印刷する)か、未印刷(印刷しない)を特定するのは、テーブルに
印刷フラグなどの項目を用意します。
つまり、連結コントロールをフォーム上に配置することになります。

連結コントロールであれば、どのレコードをチェックしたということは考えなく
ても良くなります。
また、印刷時そのデータを使ってクエリを作成すれば、指定したデータだけ抽出
可能です。

この回答への補足

アドバイスありがとうございました。
では、フォームで連結コントロールを使用する事にします。
そこで、お伺いしたいのですが、連結コントロールを使用した際に
例) 
  チェック  印刷区分
   □     0
   レ     -1
と表示されます。
印刷区分を0:印刷しない 1:印刷する と
出来るでしょうか?

何回も聞いて申し訳ありませんがよろしくお願いします。

補足日時:2001/12/25 11:43
    • good
    • 0

チェックボタン(チェックボックス)とは、非連結ですか?


ダミーでもいいので連結項目にしないと、どのレコードのチェックボックスを選択しても、全てのレコードにチェックが入ってしまうと思います。

この回答への補足

チェックボタン(チェックボックス)とは、非連結です。
その時にリストボックスのように、選択をした場所はわからないのでしょうか?
回答をよろしくおねがいします。

補足日時:2001/12/25 10:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qシートのボタンからフォーム出した場合、チェックボタンの動作がうまくいきません

フォーム上の2つのチェックボタンをトグルさせたいのですが、シート上に設定したコマンドボタンからフォームを表示させると、トグルがうまくいきません。
尚、メニューからフォームを表示させた場合、正しく動作します。
回避させる手段はあるでしょうか?
これはエクセルの仕様なのでしょうか?
Excel2003です(英語版)。英語版Windows7Proです。

フォームのVBA
Private Sub UserForm_Initialize()
  CheckBox1.Value = True
  CheckBox2.Value = False
End Sub
Private Sub CheckBox1_Click()
  CheckBox1.Value = True
  CheckBox2.Value = False
End Sub
Private Sub CheckBox2_Click()
  CheckBox2.Value = True
  CheckBox1.Value = False
End Sub

シートのVBA
Private Sub CommandButton4_Click()
  sb_UserForm1Show
End Sub

標準モジュール
Sub sb_MenuCreate()
  sb_MenuDelete
  Dim myMnu As Object
  Dim Cap_P As String
  Cap_P = "Prototype"
  Set myMnu = CommandBars("Worksheet menu bar").Controls.Add(Type:=msoControlPopup, Before:=3)
  With myMnu
    .Caption = Cap_P
  End With
  sb_Menu01 Cap_P, "Delete This Menu", "sb_MenuDelete"
  sb_Menu01 Cap_P, "RecoverTest", "RecoverTest"
  sb_Menu01 Cap_P, "Clear DataBase", "sb_ClearDatabaseConf"
  sb_Menu01 Cap_P, "Show All Data", "sb_ShowAllData"
  sb_Menu01 Cap_P, "Remove Autofilter", "sb_RemoveAutofilter"
  sb_Menu01 Cap_P, "Add Autofilter", "sb_AddAutofilter"
  sb_Menu01 Cap_P, "Remove Sub Total", "sb_RemoveSubtotal"
  sb_Menu01 Cap_P, "Add Sub Total", "sb_AddSubtotal"
  sb_Menu01 Cap_P, "Load Form", "sb_UserForm1Show"
  sb_Menu01 Cap_P, "Import to FishDataBase", "sb_Main01"
End Sub

Sub sb_Menu01(Cont_P As String, Cap_P As String, On_Act As String)
'Menu Create submodule
  With CommandBars("Worksheet menu bar").Controls(Cont_P)
    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = Cap_P
    .Controls(Cap_P).OnAction = On_Act
  End With
End Sub

Sub sb_UserForm1Show()
  UserForm1.Show
End Sub

フォーム上の2つのチェックボタンをトグルさせたいのですが、シート上に設定したコマンドボタンからフォームを表示させると、トグルがうまくいきません。
尚、メニューからフォームを表示させた場合、正しく動作します。
回避させる手段はあるでしょうか?
これはエクセルの仕様なのでしょうか?
Excel2003です(英語版)。英語版Windows7Proです。

フォームのVBA
Private Sub UserForm_Initialize()
  CheckBox1.Value = True
  CheckBox2.Value = False
End Sub
Private Sub CheckBox1_Click()...続きを読む

Aベストアンサー

そのような処理に適したオプションボタンがあるにも拘らず
なぜ、チェックボックスを使うのか、ん? という感じではありますが、、、

ま、それは置いといて。。。。

提示のコードではCheckBoxのClickイベントが発生し続けるので
質問の動作は当たり前の動作になります。


 Private Sub UserForm_Initialize()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生

 Private Sub CheckBox1_Click()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生


▼~▲のClickイベントが発生し続けるのでストップしているように見えるわけです。

これは、CheckBox1,2のClickイベントの最初に、
MsgBox "box1"など入れてみれば確認できますね。

で、CheckBoxのClickイベントを止めてやればいいわけですが、
UserFormには、Application.EnableEventsなどのメソッドがないので
普通はフラグを使ったりしますが、
今回の場合は、Changeイベントの性質を利用してもできます。

●Changeイベントを使う方法
'--------------------------------------------
Private Sub UserForm_Initialize()
   CheckBox1.Value = True
End Sub
'-------------------------------
Private Sub CheckBox1_Change()
   CheckBox2.Value = Not CheckBox1.Value
End Sub
'-------------------------------
Private Sub CheckBox2_Change()
   CheckBox1.Value = Not CheckBox2.Value
End Sub
'---------------------------------------------

UserForm_Initializeでチェックするのは、CheckBox1だけで十分だと思います。

 
●また、フラグを使う方法は、Clickイベントの部分で
  If Flag = True Then Exit Sub
などとしてClickイベントの処理をジャンプする方法です。
これはご自分で考えてみてください。


最初でも言いましたが、
今回のような処理は、オプションボタンを使うべきかと。
ま、いろいろ理由はあるのでしょうが。。。
以上です。

そのような処理に適したオプションボタンがあるにも拘らず
なぜ、チェックボックスを使うのか、ん? という感じではありますが、、、

ま、それは置いといて。。。。

提示のコードではCheckBoxのClickイベントが発生し続けるので
質問の動作は当たり前の動作になります。


 Private Sub UserForm_Initialize()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生

 Private Sub CheckBox1_Click()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生


▼~▲のClickイベントが発...続きを読む

Q[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が間違ってるのか、設定を変えてもそれをフォーム上に視覚的に反映させてないからか、それともソースとなるテーブルがないからでしょうか?

Accessでテーブルを元にしていない単独のフォームを作っています。
クエリで抽出条件をパラメータで入力させるのと同様に、日付を入力してレポートをプレビュー表示させるためのフォームです。
集計表を作成するレポートの名前が入ったチェックボックスがフォームにあり、クリックひとつですべてのチェックボックスにチェックを入れるボタンを設置しています。
(画面図:例)
(キャンセルなし集計ボタン)(キャンセルあり集計ボタン)
□報告書集計 □キャンセルあり報告書集計
□記録集計  □キャンセル...続きを読む

Aベストアンサー

>>やはりエラーが出ます。
 何というエラーが出るかがわからないと想像できませんよ。自分も特にコードにおかしいものは見当たりません。
Me!○○

Me.○○
とした方が候補がリストで出て来るので、コントロール名のミスなどがあればすぐわかると思います。


>>それともソースとなるテーブルがないからでしょうか?

 これは関係ないです。
 フォームの「更新の許可」プロパティは「はい」になっていますか?

QAccess2003のフォーム上にてレコードの編集を禁止するチェックボタン

Access2003のフォーム上にて,表示されているレコードの編集を禁止するチェックボタンをつける方法を教えてください.

日記データベースをつくっています.日付とタイトルと内容の記入欄を作ることができました.記入し終わったら,チェックボタンにチェックを入れることにより,そのレコードの編集を禁止したいと考えています.

どのように行えばよいのでしょうか.

Aベストアンサー

日付とタイトルと内容・・・ のテーブルに新たに CHK というフィールドを加えます
フィールドサイズは Yes/No型
初期値は Yes

フォームに CHK フィールドも配置します。

フォームのレコード移動時イベントに
Private Sub Form_Current()
  Me.AllowDeletions = Me!CHK
  Me.AllowEdits = Me!CHK
End Sub

とすれば CHK を Noに(チェックを外せば)
編集も削除も出来なくなります。(CHKの変更も含めて)
一旦、No にした後で、Yesに戻したいときには
テーブルを開いて行ってください。(^^ゞ


あと、間違ってCHKを外さないように
CHK の更新前イベントに

Private Sub CHK_BeforeUpdate(Cancel As Integer)
If MsgBox("チェックを外すとと以後、編集も削除もできません", vbOKCancel, "確認") = vbCancel Then
  Cancel = True
  Me.Undo
End If
End Sub

と入れておいては?

日付とタイトルと内容・・・ のテーブルに新たに CHK というフィールドを加えます
フィールドサイズは Yes/No型
初期値は Yes

フォームに CHK フィールドも配置します。

フォームのレコード移動時イベントに
Private Sub Form_Current()
  Me.AllowDeletions = Me!CHK
  Me.AllowEdits = Me!CHK
End Sub

とすれば CHK を Noに(チェックを外せば)
編集も削除も出来なくなります。(CHKの変更も含めて)
一旦、No にした後で、Yesに戻したいときには
テーブルを開いて行ってください。(^^...続きを読む

Qユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果保存

VBA初心者で恐縮です・・・

ユーザーフォームにあるチェックボックスやオプションボタンなどの選択して作業を終えファイルやユーザーフォームを閉じると、次にファイルやユーザーフォームを開いたら、前回にチェックボックスやオプションボタンにチャックをいれたものが外れています。
このように、チェックボックスやオプションボタンにチェックをいれたのを、次回ユーザーフォームを開いたときに残しておくことは可能でしょうか?
可能なら、その方法をお教えください。
よろしく、お願いいたします。

Aベストアンサー

コントロールの状態を、シートに保存しておく方法はいかがでしょうか
フォームを閉じる時にシート(dataという名前をつけています)に保存し、フォームを開く時に、値を読み込みます。(チェックボックス、オプションボタン、トグルボタン、テキストボックスで動作を確認しました。思いつきで作成したもので、普段使い込んでいるコードではありませんので、誤動作したら悪しからず。当方XL2000です)
'☆標準モジュール
Sub test()
UserForm1.Show
End Sub
'☆ UserForm1のモジュール
Private Sub UserForm_Initialize()
Dim srcRange As Range
Dim myCell As Range

Set srcRange = ThisWorkbook.Sheets("data").Range("A1").CurrentRegion
For Each myCell In srcRange.Columns(1).Cells
Me.Controls(myCell.Value).Value = myCell.Offset(0, 1).Value
Next myCell
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim myCtrl As Control
Dim destRange As Range

Set destRange = ThisWorkbook.Sheets("data").Range("A1")
destRange.Parent.Cells.Clear
For Each myCtrl In Me.Controls
With destRange
.Value = myCtrl.Name
.Offset(0, 1).Value = myCtrl.Object.Value
End With
Set destRange = destRange.Offset(1, 0)
Next myCtrl
End Sub

コントロールの状態を、シートに保存しておく方法はいかがでしょうか
フォームを閉じる時にシート(dataという名前をつけています)に保存し、フォームを開く時に、値を読み込みます。(チェックボックス、オプションボタン、トグルボタン、テキストボックスで動作を確認しました。思いつきで作成したもので、普段使い込んでいるコードではありませんので、誤動作したら悪しからず。当方XL2000です)
'☆標準モジュール
Sub test()
UserForm1.Show
End Sub
'☆ UserForm1のモジュール
Private Sub UserF...続きを読む

QAccessで、チェックボタンを使用し、レポート表示を変更する方法を教えてください。

Access初心者です。

2年間の、月ごとに集計しているあるデータがあります。
19年と18年の各月ごとに計24月分のレポートを作りました。

フォームに「1月」「2月」・・・と12月までのボタンを12個作成しました。
これをクリックすると、19年の各月のレポートが表示されるようにしました。
フォーム画面の上の方にチェックボタン1つ作り、ここにチェックを入れて、
各月のボタンをクリックすると18年の対象月データが出るようにしたいのですが、
どのようにしたら良いのでしょうか?

Aベストアンサー

無理だと思います。
そもそも、月毎にテーブルをわけるという構造が適正ではありませんね。
キーに年月を持って、年月選択でレポートを出力できるようにすべきです。
レポートも一つで済むし。


人気Q&Aランキング

おすすめ情報