1. 定型入力エラー時のエラーダイアログを置き換える
定型入力エラー時、Access標準の不親切な?ダイアログが表示されるので、これをもっと親切なものに置き換える。
①FormのErrorイベントで、エラーが発生した項目名&エラーNoを特定。
今回の場合、エラーNo.2279:「アプリケーション定義またはオブジェクト定義のエラーです」
②新しく定義しなおしたエラーメッセージを表示
③Errorイベントの引数Responceに処理継続(acDataErrorContinue)、DataErrにエラーなし(0)を設定。
RunCommandでアンドゥを実行。
エラーの原因となったデータ修正を元に戻す。
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 2279 And _
Screen.ActiveControl.Name = "機器ID" Then ・・・①
Msgbox "入力内容のエラーです", vbExclamation + vbOkOnly, "入力エラー" ・・・②
Response = acDataErrContinue ・・・③
DataErr = 0
DoCmd.Runcommand acCmdUndo
Me![機器ID].SetFocus
End If
End Sub
2. 帳票形式フォームで、カレント行をハイライト表示する
ネットで検索すると、上位に出てくるのは軒並み「条件付き書式」を使った方法。
ただこれだと、画面が非常にちらついて、ときに画面操作にも悪影響を及ぼすことがあって。
で、参考にさせていただいたのはこちら(↓)。
hatena chips:カレント行の背景色の変更 その3
非常に参考になりましたが、筆者的にちょっとアレンジしたのは次の2点。
- 交互に行の色を変える設定に対応するため、データを表示するテキストボックスの背景色は色なしのまま。
最背後に設定したテキストボックスのフォントの色を、ハイライト表示の色に設定。 - 最背面に設定したテキストボックスで、コントロールソースに設定している式中の"g"は、フォームの幅に応じて調整。
ちなみに、筆者の職場の環境(Windowos10 Pro/Access2013)でもちらつきは激減し、快適に動いております。
3. URLを指定して表示
これまでよくあったんは、さしずめIEをオブジェクト参照するこのパターンかな?
Private Sub URL表示_Click()
Dim ret As Integer, objIE0 As Object
If IsNull(Me![URL]) Then Exit Sub
Set objIE0 = CreateObject("InternetExplorer.Application")
objIE0.Visible = True
objIE0.Navigate Me![URL]
End Sub
が、これではいまさらの?IEしか対応でけへんし
いろいろ調べたら、Windows Scripting Hostを使うこんな方法があるらしいです。
Private Sub URL表示_Click()
Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run Me![URL], 1
End Sub
へぇー、これやとIEに限らず、標準のブラウザで指定したURLを開けるようです。
4. サブフォームの特定項目にフォーカスを当てる
意外とやる機会ない?かもしれませんが、いったんサブフォームのオブジェクト自体にフォーカスを移して、さらにその中の個別項目をSetFocusします。
Me![サブフォーム].SetFocus
Me![サブフォーム].Form![サンプルサブフォーム]![ID].SetFocus