Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1560 / 76734 ←次へ | 前へ→

【80824】Re:十字キーで色をつけたセルの移動の方法
回答  亀マスター  - 19/5/17(金) 23:18 -

引用なし
パスワード
   >”ユーザー定義型が定義されていません”というエラーがでます。

Declare Function から始まるAPIの宣言で、最後に As LongLong としているのが原因です。
LongLongは数値型ですが、これは64bti Officeの環境でしか使えません。
通常は32bitのOfficeを使っていると思われるので、LongLongではなくIntegerを使ってください。

−−−−−−−−−−−−−−−−

なお、それを修正したとしても、いくつか問題が発生することが予想されます。

1.始まるとキーボードの入力を受け付けなくなる
2.1回どれかのキーを押しただけで何十個分も先のセルの色が変わる
3.特定の条件で「アプリケーション定義またはオブジェクトのエラーです」が発生する。

一度実際にやってみて、どんな不具合なのか確認してみることをお勧めしますが、原因と対処法は次のようなものになります。

1.ループを回り続ける間、VBAがパソコンの処理全体を押さえてしまい、他のことができなくなる。
→DoEventsという処理があるので、使い方を調べてみてください。

2.ユーザーは1回だけキーを押したつもりでも、プログラムではループが一瞬で何十周もするので、押していた間にループした回数分だけそのキーが連続で押されたことになる。
→ループのたびに、直前のループでキーが押されていたかどうかをチェックし、押されていればそのループでは処理を行わないようにする。
具体的には、適当な変数(たとえばKeyOn)に、キーが押されたときの処理でTrueを代入し、どのキーも押されていなければFalseを代入する、という処理をとります。

3.変数i、jの値が0以下になった場合に発生します。このとき、Cells(i, j)で0行目や0列目のセルを指定することになるので、そんなものはないからとエラーになるのです。
iやjの値を変更するとき、変更後の結果が0以下になる場合は1にするといった対応が必要です。

以上、実際にやってみてわからないところがあれば、追加で質問してください。

23 hits

【80812】十字キーで色をつけたセルの移動の方法 SHUN 19/5/16(木) 18:40 質問[未読]
【80813】Re:十字キーで色をつけたセルの移動の方法 亀マスター 19/5/16(木) 19:35 回答[未読]
【80814】Re:十字キーで色をつけたセルの移動の方法 SHUN 19/5/16(木) 20:20 質問[未読]
【80824】Re:十字キーで色をつけたセルの移動の方法 亀マスター 19/5/17(金) 23:18 回答[未読]
【80830】Re:十字キーで色をつけたセルの移動の方法 SHUN 19/5/18(土) 12:37 お礼[未読]
【80815】Re:十字キーで色をつけたセルの移動の方法 hatena 19/5/16(木) 21:50 回答[未読]
【80831】Re:十字キーで色をつけたセルの移動の方法 SHUN 19/5/18(土) 12:38 お礼[未読]

1560 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free