- ベストアンサー
Accessのキーボード操作でクリックができない
- Windows XPのAccess 2003で、マウスを使わずにキーボードだけで操作をしたいが、クリックができない問題が発生している。
- クエリから作成したデータシートビューにある特定のフィールドをダブルクリックすると、該当IDのフォームが表示されるが、キーボード操作ではクリックができず、編集もできないメッセージが表示される。
- 問題解決のために一週間ほど調べているが、解決策が見つからず、助言が欲しい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub 旅行ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode=13 or KeyCode=32 Then DoCmd.OpenForm "旅行", , , "旅行ID=" & Me.旅行ID KeyCode = 0 End If End Sub で終わりです。 ご苦労さんでした。
その他の回答 (5)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
もう、ほとんど解決しているようなもんですよ! DoCmd.OpenForm "旅行", , , "旅行ID=" & Me.旅行ID | | | +ーー>フォームでIDを表示しているコントロール名 +ーーーーーーーー>テーブルでID値を記録してる列名 この二つを一致させるだけです。(多分)
お礼
007様 本当にありがとうございます。 左上の小窓に"旅行ID" そして 右上の小窓に" KeyDown "がある記述箇所に以下の記述だけをしてみました。 Private Sub 旅行ID_KeyDown(KeyCode As Integer, Shift As Integer) DoCmd.OpenForm "旅行", , , "旅行ID=" & Me.旅行ID End Sub そしたら.....そこに"TabKey"でカーソルで移動させて、TabKey や 矢印Keyを押しただけで、そのフォームが開けるようになりました。これが出来ないかと、四苦八苦していたことで、解決できて嬉しい限りです。 しかし、そこにカーソルがあって、SpaceKey を押した時のみ開けるように出来ないものでしょうか?どのKEYを押しても開けてしまいます。 又は、TabKey でフィールドを移動する場合が多いですので、TabKey だけ除外する...と言うのは出来ないものでしょうか? お時間をとらせてしまって申し訳ありませんが、何卒、よろしくお願いいたします。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
>DoCmd.OpenForm "旅行", , , "ID=" & Me.ID (何も無いところに入れました これが理解できません。 理由:なぜ、空行なのにフォームがオープンされるのか? × DoCmd.OpenForm "旅行", , , "ID=" & Me.ID 〇 DoCmd.OpenForm "旅行", , , "旅行ID=" & Me.旅行ID で、動くかも。でも、それはミスかも知れません。動けば良いと言うものでもないし・・・。肝心なのは、しつ問文との整合性。 【もしかしたら・・・】 Private Sub 旅行ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Or KeyCode = 32 Then 旅行ID_Click KeyCode = 0 End If とすべき!? Private Sub 旅行ID_Click(Cancel As Integer) DoCmd.OpenForm "旅行", , , "旅行ID=" & Me.旅行ID End Sub [旅行ID]のクリックイベントがあるのでは?だとしたら、DblClick()は無用。
お礼
007様 お忙しいところ、誠に恐縮です。 ▼現在の状況 データシートビューの"旅行ID"をマウスでクリックするとその旅行の"旅行"フォームが開くようにマクロを作成しています。 しかし、マウスは右肩にすごく負担がかかるので、ほとんどの操作をキーボードにしたいと奮闘しているところです。 タブの上に小窓が2つ並んでいて 左が"フォームフッタ" 右が "Clic" になっているところに Private Sub フォームフッター_Click() Cancel = (Nz(確認, 0) <= 0) End Sub があって、 左が 旅行ID 右が DblClick の欄に Private Sub 旅行ID_DblClick(Cancel As Integer) DoCmd.OpenForm "旅行", , , "ID=" & Me.ID (何も無いところに入れました) End Sub があり、さらに 左の小窓に "旅行ID" 右の小窓が KeyDownとなっているところに Private Sub 旅行ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Or KeyCode = 32 Then 旅行ID_DblClick KeyCode = 0 End If End Sub が線で別けられてハイっている状況です。Accessの基礎的な知識が無いため、かみ合わない話になっているかもしれませんが、時間のある限り、よろしくお願いいたします。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Private Sub 旅行ID_KeyDown(KeyCode As Integer, If KeyCode = 13 Then 旅行ID_Click KeyCode = 0 End IF End Sub ↓ Private Sub 旅行ID_KeyDown(KeyCode As Integer, If KeyCode = 13 Or KeyCode = 32 Then 旅行ID_DblClick KeyCode = 0 End IF End Sub ただし、 Private Sub 旅行ID_DblClick(Cancel As Enteger) DoCmd.OpenForm "フォーム名", , , "ID=" & Me.ID End Sub となっていなければ何の反応も起きません。が、質問文から察すると多分なっているんだと思います。
お礼
007様 お忙しい中、申し訳けございません。ご教示いただいた通り(?)になっているかどうか解かりませんが、入力して"Space Key"をおしたところ、「コンパイルエラー」「引数は省略できません」となって、"旅行ID_DblClick"の箇所に青い壁が出来ます。ここにある全体の記述は次のようになっています。 Option Compare Database Private Sub フォームフッター_Click() Cancel = (Nz(確認, 0) <= 0) End Sub Private Sub 旅行ID_DblClick(Cancel As Integer) DoCmd.OpenForm "旅行", , , "ID=" & Me.ID (何も無いところに入れました) End Sub Private Sub 旅行ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Or KeyCode = 32 Then 旅行ID_DblClick KeyCode = 0 End If End Sub 大変お忙しいところお手数ですが、何卒、よろしくお願い申し上げます。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、VBA抜きでショートカットキー操作をするには? A、ちょっと見当が付きません。 Windowsの[コンピュータ簡単操作センター]の仕組みも通用しないようですね。ですから、ちょっと見当が付きません。 【ショートカットキー操作と”データシート”ビュー】 [ALT+A]などのショートカットキーを仕組むには、”帳票フォーム"ビューにしてコマンドボタンを用意するのが一般的です。”データシート”ビューの場合は、この手が使えませんので先の回答のような手段を利用することになります。 1、フォームをデザインモードで開く。 2、[ID]のプロパティ編集ダイアログを開く。 3、[キークリック時]の[…]をクリックする。 4、次の4行を書く。 Private Sub ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then ID_Click KeyCode =0 End If End Sub ID_Clickは、実際に<該当IDのフォームを表示しているイベント名>を書く事になります。まあ、VBAとは言ってもこれだけのことです。[ALT+A]などのシュートカットキーを仕組むよりは簡単だと思いますよ。
お礼
007様 度々のご回答、誠にありがとうございます。ご教示を頂いたものを"データシートビュー"のフィールドに記述させていただきました。そうしましたら、見えるのが Opton Comare Database ----------------------------------------- Private Sub フォームフッター _Click() Cancel = (Nz(確認, 0) <=0) End Sub ------------------------------------------ Private Sub 旅行ID_DblClick(Cancel As Enteger) End Sub ------------------------------------------- Private Sub 旅行ID_KeyDown(KeyCode As Integer, If KeyCode = 13 Then 旅行ID_Click KeyCode = 0 End IF End Sub となっています。 エラーメッセージがあって "コンパイルエラー; SubまたはFunction が定義されていません。 OK ヘルプ が小窓で出て来ます。 ■ Space キーを押したときにマウスのダブルクリックと同じような効果が出来るようにしたいと思っています。 何卒、よろしくお願いします。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
{Enter}キーが押されるとClickイベントをコールするって手があります。もちろん、 DoCmd.XXXX を書いてもOK。この場合、{Enter}キーは KeyCode = 0 でクリアします。 Option Compare Database Option Explicit Private Sub ID_Click() MsgBox "" End Sub Private Sub ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then ID_Click KeyCode = 0 End If End Sub
お礼
007様 ご回答くださりありがとうございます。最初に記述するべきでしたが、すみません「記述」は苦手で..どこにどのように入力するかが解かりにくいんです。 すみませんが、「記述」せずに出来る方法はないでしょうか?
お礼
007様 うまくいきました。感謝感激です。 長い時間、ありがとうございました。 今後のご活躍をお祈りします。