チェックボックスを利用してフォームを開く

このQ&Aのポイント
  • チェックボックスを利用してフォームを開く
  • チェックボックスにチェックを入れると一連のデータが新しいフォームに移る様に記載しましたが、全く受け付けません。
  • フォーム上のチェックボックスを選択することで、データを別のフォームに移動することができません。何が問題なのかわかりません。
回答を見る
  • ベストアンサー

チェックボックスを利用してフォームを開く

帳票フォームでデータを出している画面の一番左にチェックボックスを配置しました。 第一にチェックボックスを1つづつ選択できるように下記を記載しました。 Private Sub 選択_Click() If Me!選択 Then CurrentDb.Execute "UPDATE テーブル名 SET 選択 = False;" Me.Refresh End If End Sub チェックボックスにチェックを入れると一連のデータが新しいフォームに移る様に 下記のように記載しましたが、全く受け付けません。 Private Sub 編集_Click() If 選択 = False Then DoCmd.OpenForm "編集F" DoCmd.Close acForm, "メインフォーム名" End If 何が問題なのかわかりません。 ご助言いただきたく、宜しくお願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

こちらでいいのですか。 前のスレッドのNo2で、 (1)と(2)をまとめて言えば、(Me.Refreshも含めて) >CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;" >Me.Refresh これを実行すると「申請履歴Q」の基になるテーブルの 「選択」というフィールドがすべて「False」になります。 というのは、 Private Sub 選択_Click() を実行すると、チェックを入れたチェックボックスも含めて チェックボックスががすべて「False」になり、チェックボックス にチェックを入れた意味が無くなるのでは? もし、チェックを入れたチェックボックスで指定している番号を 見て、フォームに該当するデータを表示しようとしているならば >CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;" を、このタイミングで実行するのは意味がないのでは?という ことを言いたかったのですが・・・・勘違いしていますかね? そこで、「False」にするのは選択を解除するということになると 思いますから、ボタンの名前を「選択解除」として、 Private Sub 選択解除_Click() If Me!選択 Then CurrentDb.Execute "UPDATE テーブル名 SET 選択 = False;" Me.Refresh End If End Sub したがって、このボタンは選択解除専用ボタンということになります。 そして、チェックを入れたデータだけ表示したいのであれば、 Private Sub 編集_Click() Dim strFil As String strFil = "[選択]=" & True DoCmd.OpenForm "編集F", , , strFil DoCmd.Close acForm, "メインフォーム名 End Sub とすれば、どうですか? 要するに、「編集F」にフィルタをかけて開こう、ということです。

chi_ko6262
質問者

お礼

毎度毎度、適切なご回答ありがとうございます。私も一生懸命努力してあなたの様に なれたら良いなと思います。現状は本の山でうずこまってますが(TT) 再度、ありがとうございました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2で、単に選択解除ですから、 If 選択 = False Then End If はいらないので、 Private Sub 選択解除_Click() CurrentDb.Execute "UPDATE テーブル名 SET 選択 = False;" Me.Refresh End Sub だけで、いいのではと思いますが。

noname#206655
noname#206655
回答No.1

データベースを何処で開くか? が分からないためだと思います。 一格上の場所で開くか、groval で開くか、また一度開くと最終行まで行ってしまうので、開いて、SEEKして、をやります。 外してたら他のユーザーを参照ください。

関連するQ&A

  • チェックボックス選択後、フォームに移して編集したい

    チェックボックスの選択では Private Sub 選択_Click() If Me!選択 Then CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;" Me.Refresh End If End Sub でチェックボックスを1つづつ選択可能にしたのですが、 フォームに移動しようとすると最初の(001)のデータがフォームに 出てきてしまいます。 Private Sub 編集_Click() Dim mode As Variant mode = Me.選択.Value DoCmd.OpenForm FormName:="編集F", DataMode:=acFormEdit うまく選択できていないのは分かるのですが、本を何冊も広げてみても 良い回答に行きつきません。 何卒、ご指導の程宜しくお願い致します。

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

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

  • フォームのCheck boxとOLEObjectのCheckboxのマクロの違い?

    エクセル2003です。 ワークシート上に複数個のチェックボックスを配置し、オンの場合、その左隣のセルの値を返すマクロを作成する場合についての質問です。 普段はフォームのCheck boxを使っています。 フォームのCheck boxなら Sub ChkBx() With ActiveSheet.CheckBoxes(Application.Caller) If .Value = xlOn Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub と、標準モジュールに一つだけプロシージャを書いて、複数個のCheck boxに同一のマクロを登録すれば簡単に出来ます。 ところがこれをOLEObjectのCheckboxでやってみようと思ったところ、フォームのように一つのプロシージャを使いまわすことができず、シートモジュールに以下のように各Checkboxごとのマクロを書かなくてはいけないようです。 Private Sub CheckBox1_Click() With OLEObjects("CheckBox1") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub Private Sub CheckBox2_Click() With OLEObjects("CheckBox2") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub Private Sub CheckBox3_Click() With OLEObjects("CheckBox3") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub 3つや4つくらいならどうってことはないのですが十数個もあるとかなり面倒です。 OLEObjectのCheckboxでももっと簡単にする方法はないのでしょうか? それともわたしが何かOLEObjectのCheckboxの使い方について思い違いをしているのでしょうか? ご教示をお願いいたします。

  • エクセル チェックボックスの解除について(VBA)

    YES/NOを入力させる為の下記のVBAにおいて、チェックボックス1をチェックすると、アの部分でチェックボックス2の解除を行う関係で?、シート上でチェックボックス2を操作していないのにもかかわらず、勝手にCheckBox2_Click()に入り、命令文イを実行してしまいます。 ただ単にSub CheckBox1_Click()のルーチンの最後までの処理で終わりたいのですが、どうしたらよいのでしょうか。 Private Sub CheckBox1_Click() If CheckBox1 = True Then Sheets("sheet1").Range("A1") = 1 Sheets("sheet1").Range("A2") = 0 CheckBox2 = False・・・ア Else Sheets("sheet1").Range("A1") = "" End If End Sub Private Sub CheckBox2_Click() If CheckBox2 = True Then Sheets("sheet1").Range("A1") = 0 Sheets("sheet1").Range("A2") = 1 CheckBox1 = False Else Sheets("sheet1").Range("A2") = ""・・・イ End If End Sub

  • エクセル VBAのチェックボックスについて

    お読みくださり、ありがとうございます。 エクセル初心者でございます。 エクセルのマクロなのですが、 お詳しい方、是非教えて欲しいです!汗 調子に乗って入力フォームなるものを作りました。 入力フォームの中にて、チェックボックスで「ある」「なし」の項目を入れてみたのですが、チェックしていないのに、値が入る現象が起きています汗 以下、素人が書いたコードを恥を承知で記載させていただきます。 Private Sub CheckBox1_Click() If CheckBox1.Value = True Then OK = "○" End If End Sub Private Sub CheckBox2_Click() If CheckBox2.Value = True Then NO = "×" End If End Sub Private Sub UserForm_Click() End Sub '以下のコードは、登録ボタンがクリックされたときの処理! Private Sub 登録ボタン_Click() If TextBox1.Text = "" Then MsgBox "グッズ名を入力してください。" Exit Sub End If If TextBox2.Text = "" Then MsgBox "アプローチ先を入力してください。" Exit Sub End If With Worksheets("協賛グッズ") With Cells(Rows.Count, 2).End(xlUp) .Offset(1, 0).Value = TextBox1.Text .Offset(1, 1).Value = mori .Offset(1, 2).Value = mori2 .Offset(1, 3).Value = TextBox2.Text .Offset(1, 5).Value = TextBox3.Text .Offset(1, 6).Value = TextBox4.Text .Offset(1, 7).Value = TextBox5.Text .Offset(1, 8).Value = TextBox6.Text End With End With TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" CheckBox1.Value = False CheckBox2.Value = False End Sub 以上です。 おかしなところ満載かと思いますが、 チェックを入れた項目だけ値を入れたいと考えております。 おわかりになるかたおりましたら何卒お助けください汗 よろしくお願いいたします。

  • エクセル2003(VBA)で違うフォームのチェックボックス配列を繰り返し処理したい

    エクセル2003(VBA)で違うフォームのチェックボックス配列を 元に順番に繰り返し処理したいのですが、うまくいきません。 どうかお知恵をお貸し下さい。 よろしくお願いします。 ■<ユーザーフォーム1>(本体フォーム) Private Sub CommandButton1_Click() UserForm2.Show Dim n As Integer Dim ender As Integer ender = 1 i = 1 For n = 1 To 20 If i > 4 Then i = 1 '4を超えたら1に戻る If cb(i).Value = False Then 'チェックがなかったら飛ばす i = i + 1 '次の配列へ n = n - 1 'ループ回数をカウントしないように1引く Else Worksheets("sheet1").Cells(ender, 5).Select Worksheets("sheet1").Cells(ender, 5) = "■" & cb(i).Caption & " = " & cb(i).Value ender = ender + 1 i = i + 1 End If Next n End Sub ■<ユーザーフォーム2>(チェックボックスフォーム) Private Sub CommandButton1_Click() Const cb_num = 4 'チェックボックスを4個に設定 Dim cb(cb_num) As Control Dim ctrl As Control Dim i As Integer i = 0 For Each ctrl In Me.Controls 'コントロールの数だけループする If TypeName(ctrl) = "CheckBox" Then 'タイプがチェックボックスなら i = i + 1 If i > cb_num Then Exit For 'チェックボックスの数を超えたコントロールは無視 Set cb(i) = ctrl 'コントロールを配列に代入 End If Next ctrl End Sub

  • ACCESSでフォームのUnloadでデータベースを閉じる様にしたら・・・

    ACCESS97でフォームのUnloadを使ってフォームを閉じた後、データベースも閉じるプログラムを作って実行させました。思った通りに動いたのですが、フォームをデザインビューにしようとすると、おそらく上記のプログラムが実行される為、データベースが閉じてしまうので編集できなくなってしまいました。 Pribate Sub cmdClose_Click() DoCmd.Close acForm,Me.Name End Sub -------------------------------- Private Sub Form_Unload(Cancel As Integer) Application.CloseCurrentDatabase End Sub 多分この様なプログラムでした。 解決方法を教えてください。 宜しくお願いします。

  • 2つのチェックボックスを制御

    2つのチェックボックスがあり両方ともはずせて片方だけにチェックがつく2つの チェックボックスが作りたいです 自分なりに作成してみました。このソースで不具合等ありませんでしょうか Private Sub ckb1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ckb1.CheckedChanged If ckb1.Checked = True Then ckb2.Checked = False End If End Sub Private Sub ckb2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ckb2.CheckedChanged If ckb2.Checked = True Then ckb1.Checked = False End If End Sub 新人プログラマーなので自信がありません

  • Excel ユーザーフォームのコンボボックスについて

    始めまして、マクロに関してはまだまだ勉強中なのですが、ユーザーフォームのコンボボックスについてつまづいてしまい、皆さんにご教授頂ければと思います。 一つユーザーフォームを作成後、そのフォーム内にコンボボックスを配置し、リストから項目を選択できるようにしたいと考え下記のように記述したのですが、ユーザーフォームを実行してもフォームは表示されてきますが、ボックスを選択してもリストに項目が表示されてきません。 Private Sub cmd入力_Click() End Sub Private Sub 選択グループCombo_Change() With 選択グループCombo .AddItem "初級" .AddItem "中級" .AddItem "上級" Private Sub cmd閉じる_Click() Unload Me End Sub この記述自体が間違っているのでしょうか。 宜しくお願いします。

  • チェックボックスの使い方

    チェックボックスの使い方 エクセルでの質問です ユーザーフォームにシート名を入れたチェックボックスが、6こ付いており チェックを入れたシートのみを印刷(コマンドボタンで実行)しようとしております 以下のコードを印刷のコマンドボタンに埋め込みました --------------------------------- Private Sub CommandButton1_Click() On Error GoTo HandleErr Dim i As Integer For i = 1 To Sheets.Count If Me.Controls("CheckBox" & i).Value Then Sheets(i).PrintOut End If Next i Exit Sub HandleErr: MsgBox "印刷シートが選択されていません" End Sub --------------------------------- (1)印刷が正常になされても”印刷シートが選択されていません” とメッセージボックスがでてしまいます チェックされていない場合はエラーメッセージを出しつつ、回避する方法を教えて下さい (2)各シート内の使用されている任意のセル範囲を印刷したいのですが、 どのようなコードをどの位置で使用すればよろしいでしょうか? 素人的な質問で申し訳ありません よろしくご回答願います