- ベストアンサー
【Access】テキストボックスを入力後に無効化する方法
- テキストボックスに入力後、入力内容がデータベースに存在した場合、テキストボックスを無効化する方法について説明します。
- ソースコードを使用して実装する際に発生するエラーについても解説します。
- 正しい方法をお教えしますので、参考にしてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- tag1701
- ベストアンサー率54% (67/123)
関連するQ&A
- 【Access】コントロールのプロパティをまとめて設定する方法について
ソース内で一つのコントロールに複数のプロパティを設定しており、 コントロールが複数あるため、関数内でコントロールのプロパティを設定したいと思いました。 よって、下記のようなソースを記述しましたが、 「NULLの使い方が不正です。」と表示されてしまいました。 【ソース】 Private Sub Form_Load() ' Me.txt_1.Enabled = False ' Me.txt_1.Locked = True SET_LOCK (Me.txt_1) SET_LOCK (Me.txt_2) End Sub Public Function SET_LOCK(CtrName As String) CtrName.Enabled = False CtrName.Locked = True End Function その為、上記のように、コントロール名を関数に渡し、 関数内でプロパティをまとめて設定する方法をご存知の方がいらっしゃいましたら、 ご教示いただければと思います。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 【Access】サブフォームの項目選択時、対応するコントロールの有効無効を制御する方法
サブフォーム内にテーブル名tblのデータを帳票フォームで連結し、 サブフォーム内のチェックボックスをクリックすると、 対応するコンボボックスの有効無効を制御したい (ID=1のチェックボックスクリック時、ID=1のコンボボックスの有効無効を制御)と思いましたが、 どのチェックボックスをクリックしても、 ID=0~ID=2のすべてのコンボボックスが有効になったり、無効になったりしてしまいました。 【テーブル名:tbl】 ID, checkbox, combobox 0, false, A 1, true, B 2, false, C 【サブフォーム名のチェックボックスのクリックイベント】 Private Sub checkbox_Click() If Me.checkbox = True Then Me.combobox.Enabled = True Else Me.combobox.Enabled = False End If End Sub 何かしら添え字を渡す事ができれば、対応できるのではと思いましたが、 どのように記述すればよいか分かりませんでした。 その為、上記のような場合、個別で制御する方法をご存知の方がいらっしゃいましたら、 ご教示いただければと思います。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- Accessにて、コントロールの編集可能、使用可能の設定
Access2002を使用しています。 表形式で作成したフォームで、 Aというチェックボックスに、チェックが入っている場合 Bのコントロールは入力可能、 Cのコントロールは入力不可 チェックが入っていない場合、 Bのコントロールは入力不可、 Cのコントロールは入力可能 というふうにしたいのですが、 Private Sub A_AfterUpdate() If A = -1 Then B.Locked = False B.Enabled = True C.Locked = False C.Enabled = False Else B.Locked = False B.Enabled = False C.Locked = False C.Enabled = True End If End Sub 上記のように設定すると、すべてのレコードに対しての設定になってしまいます。 1件ずつのレコードに対して、条件を設定するにはどのようにすればよいでしょうか? よろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- 【Excel VBA】ユーザーフォーム テキストボックスの有効・無効について
Excel2003を使用しています。 ユーザーフォームにテキストボックスを11個とコマンドボタンを2個配置しています。 TextBox9に“0000”(文字列です)が入力されたら、TextBox10を有効に、それ以外は無効に設定したく、TextBox10のEnabledプロパティをFalse、LockedプロパティをTrueにして、コードを下記のように書いたのですが、うまくいきません。どこか、間違っているでしょうか? コードは該当部分だけ、載せています。よろしくお願いします。 -------------------------------------------------- If TextBox9.Text = "0000" Then TextBox10.Enabled = True TextBox10.Locked = False TextBox10.BackStyle = fmBackStyleOpaque Else TextBox10.Enabled = False TextBox10.Locked = True TextBox10.BackStyle = fmBackStyleTransparent End If
- ベストアンサー
- オフィス系ソフト
- コントロールに触れたら使用可能にしたい
通常は「使用可能」を「いいえ」にして、テキストボックスにカーソルが振れたら、使用可能を「はい」にしたいのですが Private Sub ID_Enter() Me.ActiveControl.Enabled = True End Sub Private Sub ID_GotFocus() Me.ActiveControl.Enabled = True End Sub Private Sub ID_LostFocus() Me.ActiveControl.Enabled = True End Sub Private Sub ID_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ActiveControl.Enabled = True End Sub どれもクリックしないと動作しないようなのですが、このような場合、どのイベントを使えばいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- アクセス 抽出条件が一致したらフォームを開く
教えてください! フォームを「開くとき」イベントに、以下のコードを書きました。 Private Sub Form_Open(Cancel As Integer) Me!コマンド24.Enabled = False End Sub そのフォームの中には、以下のふたつ(a,b)と、コマントボタン「コマンド24」があります。 a:テキストボックス「当月の名前」『コントロールソースに、=DatePart("m",Date())を設定』 b:コンボボックス「月」『リスト値で、4,5,6,7,8,9を設定』月 そして、aとbの数値が一致した時に、検索ボタンを使用可能にする というコードを書きました。(というか、書いたつもりです) Private Sub 月_AfterUpdate() If (Me!当月の名前) = (Me!月) = True Then Me!24.Enabled = False Else Me!コマンド24.Enabled = True End If End Sub ですが、数値が一致しなくても、検索ボタンどうも、うまくいきませんでした。 このコードのどこが間違っているのでしょうか?
- ベストアンサー
- Windows XP
- EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
ユーザーフォームにコンボボックス2個textboxが2個あります コンボは選択のみです。 コンボとtextbox1は入力必須にして、空欄でコマンドボタンが押された時はメッセージを表示したいです OKwebを参考に作ったのですが、コンボ1が空欄でもMsgが出ません 願いします Private Sub CommandButton1_Click() Dim ctrl As Control, tst1 As String, txt2 As String Dim ws As Worksheet Set ws = Sheets("sheet1") For Each ctrl In Me.Controls Select Case ctrl.Name Case "ComboBox1", "ComboBox2", "TextBox1" If Me.Controls(ctrl.Name).Value = "" Then txt1 = txt1 & ctrl.Name & vbLf Else txt2 = txt2 & Me.Controls(ctrl.Name).Value & vbLf End If End Select Next If Len(txt1) > 0 Then MsgBox "以下の値を入力してください" & vbLf & txt1, vbExclamation Exit Sub Else ret = MsgBox("以下の値を入力します" & vbLf & txt2, vbOKCancel) If ret <> vbOK Then Exit Sub
- ベストアンサー
- オフィス系ソフト
- コンボボックスの変更に応じてテキストボックスの有効を切り替える(ExcelVBA2007)
お世話になります。 Excel VBA 2007で質問です。 今、 Label1 ComboBox1 TextBox1 Label2 ComboBox2 TextBox2 ・・・ Label100 ComboBox100 TextBox100 のようなフォームがあるとします。 ComboBox1~100は「Any」「is」「is not」のいずれかの値が取れ、初期値はAnyとします。 TextBox の Enabled プロパティの初期値は False とします。 やりたいことは、 ComboBox が「Any」でない場合(is または is not のいずれかの場合)にのみその右隣の TextBox の Enabled プロパティを True にしたいのです。 いま、ComboBox30 を Any から is に切り替えたとします。 すると、TextBox30.Enabled を False から True にしたいのです。 ここで、ComboBox30 を is から is not に切り替えたとします。 TextBox30.Enabled は True のままです。 ここで、ComboBox30 を is not から Any に切り替えたとします。 すると、TextBox30.Enabled を True から False にしたいのです。 ComboBox のイベントハンドラで Sub ComboBox30_Change () If ComboBox30.Value = "Any" Then TextBox30.Enabled = "False" Else TextBox30.Enabled = "True" End If End Sub のように書けばいいことは分かっているのですが、その場合は数字だけ変えたイベントハンドラを100個書かなければなりません。 このイベントハンドラを1個にすることはできるでしょうか。 (コンボボックス100個のうちどれかが変更されたら、変更されたコンボボックスの番号を知りながら呼び出されるハンドラ) 次善の策として、 Sub ComboBox30_Change () userSubroutine End Sub のように書くこともできるかと思いますが、この場合、どのコンボボックスが変更されたか(どのイベントハンドラが起動されたか)を知って、userSubroutine に渡さなければなりません。 よろしくお願いします!
- ベストアンサー
- Visual Basic
- リストボックスからの入力をテキストに貼付
下記コードではリストボックあ行選択しテキスト1~6に入力後、クリアボタンで消去したあと、か行選択しテキストに入力したら7~貼付けになるクリアボタンで消去後、改めてテキスト1~入力するコードがありますか。どなたか解る方よろしくお願いします。 Private Sub 実行_Click() Static cnt As Integer Dim i As Integer If Listbox.ListIndex = -1 Then Exit Sub For i = 0 To Listbox.ListCount - 1 If Listbox.Selected(i) Then cnt = cnt + 1 If cnt > 10 Then cnt = 1 Me.Controls("TextBox" & cnt).Text = Listbox.List(i) End If Next End Sub Private Sub クリア_Click() Dim tbCont As Control With Me.MultiPage1 For Each tbCont In .Pages(.Value).Controls If TypeName(tbCont) = "TextBox" Then tbCont.Value = Null End If Next tbCont End With End Sub
- ベストアンサー
- Visual Basic
- Accessのレポートでデータがなくても罫線だけ表示させたい
Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database Dim A As Integer '-------今何行目なのかをカウントする為の変数 Dim B As Integer '-------今回印刷する予定のレコード件数を入れて おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) A = 0 B = DCount("ID", "Q05商品リスト") Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) A = A + 1 If A Mod 10 = 0 Then Me!改ページ3.Visible = True Else Me!改ページ3.Visible = False If A < B Then Me.NextRecord = True Me!商品名.Visible = True Me!メーカー名.Visible = True ElseIf A = B Then Me.NextRecord = False Me!商品名.Visible = True Me!メーカー名.Visible = True Else Me.NextRecord = False Me!商品名.Visible = False Me!メーカー名.Visible = False End If End If End Sub
- ベストアンサー
- オフィス系ソフト
お礼
ご回答ありがとうございます。 ご提示いただいたソースで意図した動作が行われる事を確認しました。 また、更新前イベント、更新後イベントの解説をしていただき、ありがとうございます。 なお、よく考えたら「txt_ID」は下記の感じの動作でいいのかなと思ったので、 Else内のソースを変更させていただきました。 【動作】 1. 異常時は、入力欄を空白にして問題なさそうでした (入力エラーの内容はメッセージボックスでポップアップ表示するようにしました)。 2. 異常時は、txt_IDにフォーカスがとどまっていた方が良いと思いました。 【変更後のソース】 ' ------------------------------------------------------------------------------ Me.txt_ID = "" ' 一度適当な生きているコントロールにフォーカスを飛ばした後、フォーカスを戻す Me.preview.SetFocus Me.txt_ID.SetFocus ' ------------------------------------------------------------------------------ このたびはどうもありがとうございました。 以上、よろしくお願いします。