• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AccessのエラーチェックでFキーcmdボタンから反映されない)

AccessのエラーチェックでFキーcmdボタンから反映されない

Watapo3の回答

  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.3

>実行時エラー'cmdF5'にフォーカスを移動することはできません。 >*ラベルなど、フォーカスを取得できないコントロールです。 >*コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。 >*コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。 >ちなみに上記指摘のプロパティは全て[Yes/はい]に設定してます。 うぅ~ん・・・ かなり自信ありませんが、SetFocusの前に Me.Repaint と、一行入れてみて下さい・・・ダメかな(; ;)

pooh_200x
質問者

お礼

何度も何度もごめんなさい! やっぱり駄目みたいです。 実行時エラー'2110': コントロール'cmdF5'にフォーカスを移動することはできません。 *ラベルなど、フォーカスを取得できないコントロールです。 *コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。 *コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。 ↑が出てしまいました。記述の仕方が悪いのでしょうか? cmdTxtF5はコマンドボタン(更新)です。 txtMsgはエラー内容を表示するテキストボックスです。 Private Sub cmdTxtF5keydown() Dim intKsn As Integer Dim lngID As Long Dim intEnd As Integer Dim errMoji As String   Me.Repaint Me.cmdTxtF5.SetFocus ’エラーチェック '未入力チェック Me.txtMsg = "" If IsNull(Me.募集内容) Or Me.募集内容 = "" Then Me.txtMsg = "募集内容データが未入力です。" Me.募集内容.SetFocus Exit Sub End If '入力禁止文字チェック(全角空白)

関連するQ&A

  • アクセスでのコマンドボタンでの上書き保存について。

    Private Sub cmd_修正_Click() Dim fname As String fname = "F_kihonn" '転送先のフォーム名 If SysCmd(acSysCmdGetObjectState, acForm, fname) = 0 Then DoCmd.OpenForm fname, acNormal '転送先フォームが開いてない場合は開く End If DoCmd.GoToRecord acDataForm, fname, acNewRec '転送先フォームの新規レコードをカレントにする '値の代入 Forms!F_kihonn!更新日 = Me!更新日 Forms!F_kihonn!コード = Me!コード Forms!F_kihonn!カナ = Me!カナ Forms!F_kihonn!発注者名 = Me!発注者名 Forms!F_kihonn!担当部署 = Me!担当部署 Forms!F_kihonn!郵便番号 = Me!郵便番号 Forms!F_kihonn!住所 = Me!住所 Forms!F_kihonn!ビル名等 = Me!ビル名等 Forms!F_kihonn!電話番号 = Me!電話番号 Forms!F_kihonn!FAX番号 = Me!FAX番号 Forms!F_kihonn!URL = Me!URL Forms!F_kihonn!特記事項 = Me!特記事項 End Sub というのを書きました。これだとコードにキーを持たせているので、転送先フォームでコード以外の内容を修正すると、「重複しているので変更できませんでした」とエラー表示が出ます。上書き保存ができればいいのでしょうけど。上書き保存のコマンドボタンとかを作ればいいのでしょうか??何かいい方法はありますか?わかる方いましたらご教示ください。初心者の質問ですみません。宜しくお願いします。

  • Accessテキストボックスの未入力チェック

    いつも参考にさせて頂いております。 Accessテキストボックスの未入力チェックで上手くいかず悩んでいます。過去の情報等調べましたが、わかりませんでした。 どなたか宜しくお願い致します。 フォーム1にテキストボックス1、ボタン1があります。 テキストボックスを何も入力せず、Enter等で移動する時にチェックをかけたいです。 もし、テキストボックスに何も入力がなかったら、メッセージを出し、フォーカスをテキストボックスに戻す。 何か入力があれば、ボタンにフォーカスが移動する。 If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Me.テキストボックス1.SetFocus End If 宜しくお願い致します。

  • ACCESS重複のチェック

    ACCESSで重複チェックをしたいと思います。 現在は電話番号テーブルだけしかありません。 電話番号のテーブルを主キーを使って重複している場合エラーメッセージを出すというものです。保存ボタンもありません。 Private Sub text電話番号_BeforeUpdate(Cancel As Integer) If IsNumeric(text電話番号) = False Then '数字チェック。 MsgBox "電話番号は数字で入力して下さい。", vbCritical Cancel = True ' 処理を取り消します。 Me.Undo End If Dim strmsg As String strmsg = "重複しています" If Not IsNull(DLookup("[電話番号]", "ダブリチェックテーブル", "[電話番号] = [text電話番号]")) Then MsgBox strmsg, 16, "ダブリチェック" Cancel = True '処理を取り消します。 Me.Undo '元に戻します。 Else Cancel = False '処理を続行します。 End If End Sub これに、企業名と出発日という項目を増やしたいと思います。 ですが、何万とある電話番号を一気に入力して調べているので、一回一回企業名と出発日を入れていると生産性が落ちます。 ですので、企業名と出発日は最初の入力だけで次のレコードに移動してを継続させたいのです。そして電話番号以外にカーソルを行かないようにしたいです。 何か良い方法があればご教授お願いします。 ちなみにいろいろ自分なりに試したのですが、重複してエラーを出した場合に企業名にカーソルが飛んだししてうまくいきませんでした。

  • [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で重複チェック後にフォーカスを移動したい

    Private Sub 会社名_AfterUpdate() ACCESS2003です。 フォーム上で入力後(更新後処理)に重複チェックをしています。 重複したときにエラーメッセージを出してフォーカスさせたいのです。 エラーメッセージまでは上手くいくのですが、フォーカスが移動してくれません。 どこが悪いのでしょうか? Private Sub 会社名_AfterUpdate() Dim i As Integer i = DCount("*", "tbl取引先", "会社名 ='" & Me.会社名 & "'") If i = 1 Then MsgBox [会社名] & " は登録済みです。" Me![会社名].SetFocus Cancel = True End If End Sub よろしくお願いします

  • 非連結のtxtBoxのデータをcmdボタンで検索

    非連結のtxtBoxのデータをcmdボタンで検索 いつもお世話になります。<m(__)m> 「T顧客管理」を基に「F顧客管理入力」を作成し「F顧客管理入力」 には非連結の「txtBox」と「cmd検索」があります。 「T顧客管理」に追加クエリにて「商品管理_ID・管理番号・商品名」 が入力済みになっております。 そこで「txtBox」に管理番号を入力して「cmd検索」を押して検索 されたレコードに顧客のデータを入力したいのですが、レコードが 検索されません。 「cmd検索」のイベントに Private Sub cmd検索_Click() DoCmd.SearchForRecord , , acFirst, "管理番号 Like '*" & Me!txt検索 & "*'" Me!txt検索 = Null End Sub としています。 追加クエリは INSERT INTO T顧客管理 ( 商品管理_ID, 管理番号, 商品名 ) SELECT T商品説明.商品管理_ID, T商品説明.管理番号, T商品説明.商品名 FROM T商品説明 WHERE (((T商品説明.商品名) Is Not Null)); として「T商品説明」には、他にフィールドがいくつかあります。 --「T顧客管理」-- 商品管理_ID ---- 数値型(主キー) 管理番号 ------- テキスト型 商品名 --------- テキスト型 販売日時 ------- 日付/時刻型 販売価格 ------- 通貨型 お名前 --------- テキスト型  ・  ・  ・ ----------------- コード等間違いがありますでしょうか? 初歩的な事と思いますが宜しくお願い致します。<m(__)m>

  • エラーのチェックについて

    1~10の数字以外が出たら、再入力を促すようにしたいのですが、上手くいかないので教えてください。 int main(void) { char buf[MAX], moji[MAX]; int n, num; printf("1から10の番号を入力してください:"); while (1) { fgets(buf, MAX, stdin); // 文字列の読み込み n = sscanf(buf, "%d%s", &num, moji); // 文字列から変換 if (num >= 1 && num <= 10 && n == 1) { // 範囲外のエラーチェック break; // 正なら終了 } else { // 間違っていたら入力し直し printf("1から10の番号を入力してください:"); } } 以上のようにして、aや11, ctrlキー+zを入力してEnterを押したときは良いのですが、aの後に続けてctrlキー+zを入力してEnterを押したらelseのprintfがずっと出力され続けてしまいます。それ以外に自分で試した入力の中にはエラーは出ませんでした。ctrlキー+zのことを良く理解していないということもあるのかもしれません。

  • ACCESS2000 ボタンメッセージについて

    ACCESS2000を使用しております。 フォームのボタンを押すとレポートが開くようになっています。 フォームのフィールド「終了日」がうるう年の2/28だったら、ボタンを押した時に警告のメッセージが出るようにしたいです。 現在は以下の通り、「終了日」を更新した時にメッセージが出るようにしています。 --- Private Sub 終了日_BeforeUpdate(Cancel As Integer) Const cMsg = "うるう年ですけど、2/29じゃなくて大丈夫ですか?" If Format(Me.終了日.Text, "mdd") = "228" And _ IsLeapYear(Year(Me.終了日.Text)) Then If MsgBox(cMsg, vbYesNo) = vbNo Then Cancel = True End If End If End Sub --- これをボタンの方にも流用しようと思い、(終了日を更新しない状態でもボタンを押すことがある為、その時点でもチェックを掛けたい) 以下を「マウスボタン解放時」に入れてみましたが、エラーが出てしまいました。 --- Private Sub Ctl_新_証書新規_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Const cMsg = "うるう年ですけど、2/29じゃなくて大丈夫ですか?" If Format(Me.終了日.Text, "mdd") = "228" And _ IsLeapYear(Year(Me.終了日.Text)) Then If MsgBox(cMsg, vbYesNo) = vbNo Then Cancel = True End If End If End Sub --- エラー内容は以下の通りです。 実行時エラー'2185' コントロールがフォーカスを取得していない時に、コントロールのプロパティまたはメソッドを参照することはできません。 そのままコピペしたので、値の更新をするとかしないとか、 ボタンを押した場合では関係ないので、その辺がエラーになっているのだと思うのですが、 どこを直したら良いのか分からず、お知恵をお貸し下さい。 要は、ボタンを押した時に警告メッセージを出し、「はい」であればレポートを開き(クリック時に開くマクロが入ってます)、「いいえ」であれば、開かずに元の画面のままが良いです。 宜しくお願いいたします。

    • ベストアンサー
    • Skype
  • Accessでエラーメッセージの表示を消したい

    いつもお世話になります。 また知恵をお貸し願えませんか。  テーブルのデータをキーを指定して呼び出し修正して更新するフォームを作成しました。 修正をしたあとの処理のため「更新」ボタンと「キャンセル」ボタンを設定しました。  修正を入力したあとに「キャンセル」ボタンをクリックした場合は正常に処理されるのですが、 何も修正入力せずに「キャンセル」ボタンをクリックすると(内容を確認したいだけ、違うレコードを 呼び出した等)   コマンドまたはアクション’元に戻す’は無効です というエラーメッセージが表示されます。 OKをクリックすれば処理は進められるのですが、できればエラーメッセージは表示させたくないと 思います。  「キャンセル」ボタンのプロパティでクリック時の[埋め込みマクロ]で下記のように指定しています。    条件        アクション        引数 エラー時        次、            コマンドの実行    元に戻す [MacroError]<>0 メッセージボックス  =[MacroError],[Description],はい,なし            閉じる         ,,確認 元に戻すがエラーになっているので 閉じる 以外を消去してところ エラーメッセージは表示されませんでしたが、修正を行ったあとに「キャンセル」ボタンを クリックしてもレコードの内容が変更されていたため元に戻しました。 どのように指定すればよいでしょうか

  • Accessフォームのボタンの二度押し禁止

    Access2000において、長い処理をさせる時、 ボタンを押した後に再びボタンを押してしまい処理が走ってしまうのを防ぐため、 以下のようなコードを考えましたが、エラーが発生します。 (以下のコードは簡略化しています) Private Sub cmd売上伝票変更_Click()   strMsg = MsgBox("更新します。よろしいですか?", vbYesNo)   If strMsg = vbNo Then     MsgBox "中止しました。", vbOKOnly     Exit Sub   End If   'ボタンを無効にしようとしましたがここでエラー   Me.cmd売上伝票変更.Enabled = False   Do Until 条件     ~ここに処理が入る~     'ステータスバーに進捗状況表示     Application.SysCmd acSysCmdSetStatus, lngCount & "件 / " & lngTotal & "件 完了"     DoEvents   Loop End Sub 進捗状況をステータスバーに表示させるために、DoEventsを入れていますが、 これがモトで再びボタンが押せてしまいます。 入れない場合、どこかクリックするだけで画面がフリーズしたようになってしまいます。 ボタンを押せなくする方法、またはボタンを押した後、画面だけ更新できる方法で、 何かよい方法は無いでしょうか?