Excel VBA質問箱 IV

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

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


6158 / 13644 ツリー ←次へ | 前へ→

【46834】EnterにTabの機能を割り付けたい RDK 07/2/18(日) 10:14 質問[未読]
【46838】Re:EnterにTabの機能を割り付けたい りん 07/2/18(日) 14:57 回答[未読]
【46873】Re:EnterにTabの機能を割り付けたい RDK 07/2/19(月) 14:34 お礼[未読]
【46839】Re:EnterにTabの機能を割り付けたい Kein 07/2/18(日) 16:02 回答[未読]
【46874】Re:EnterにTabの機能を割り付けたい RDK 07/2/19(月) 14:41 お礼[未読]

【46834】EnterにTabの機能を割り付けたい
質問  RDK  - 07/2/18(日) 10:14 -

引用なし
パスワード
   いつもお世話になっています。
初めて質問させていただきます。

エクセルの表に、保護をかけて入力可能なセルと、
入力不可のセルに分けています。
このときにTabキーを押すと、入力可能なセルにだけアクティブセルが移動します。
この機能をEnterキーに割り付けることは可能なのでしょうか。

アクティブセルの列番号を取得して
その番号に応じて、次のアクティブセルの番号を指定する
というモジュールを作成してそれを
Enterキーに割り付ける方法(Onkeyメソッド)で
対応することはできたのですが、
これだと、入力する項目が違うシートに
この機能を設けるときにいちいち設定が必要になるのと
モジュールがEnterキーを押す度に動くのでPCに負荷が
かかるのではないかと思いました。

Enterキーを押したらTabキーを押したのと同じにする
方法がありましたら教えてください。


【46838】Re:EnterにTabの機能を割り付けたい
回答  りん E-MAIL  - 07/2/18(日) 14:57 -

引用なし
パスワード
   RDK さん、こんにちわ。

>エクセルの表に、保護をかけて入力可能なセルと、
>入力不可のセルに分けています。
>このときにTabキーを押すと、入力可能なセルにだけアクティブセルが移動します。
>この機能をEnterキーに割り付けることは可能なのでしょうか。
XL2003では、シートを保護する時に「ロックされた範囲の選択」のチェックをはずすと、EnterでもTabでも入力可能なセルだけに移動します。
Enterでも横に走りたいときはオプションで変更できます。

この保護のオプションはXLXP(2002)以降のだったと思いますが、それ以前のバージョンですか?


全部ThisWorkbookに書いてください。

'クローズ時にリセット
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
End Sub
'オープン時に組み込む
Private Sub Workbook_Open()
  Application.OnKey "{ENTER}", ThisWorkbook.Name & "!ThisWorkbook.TBMove"
  Application.OnKey "~", ThisWorkbook.Name & "!ThisWorkbook.TBMove"
End Sub
'TABキーを送る
Private Sub TBMove()
  If TypeName(Selection) = "Range" Then
   Application.SendKeys vbTab
  End If
End Sub
マクロを使うならこんな感じです。

【46839】Re:EnterにTabの機能を割り付けたい
回答  Kein  - 07/2/18(日) 16:02 -

引用なし
パスワード
   入力確定したら、直ぐに次のロックされていないセルに移動したい、
ということですね ?
最も簡単なのは、ロック解除しているセルを全て選択してしまうだけ、
という方法です。選択されている間は、Enterキーでその範囲内のみを
移動できます。移動方向も任意に決めることが出来ます。
以下のようなマクロを、対象シートのシートモジュールに入れてみて下さい。

Private Sub Worksheet_Activate()
  Range("B2:D5, B7:B8, B13:B16, B18:B20").Select
  '↑ロックを解除しているセル範囲を指定
  Application.MoveAfterReturnDirection = xlToRight
  '↑このシートだけ、入力確定後のセル移動を右方向へ変更
End Sub

Private Sub Worksheet_Deactivate()
  Application.MoveAfterReturnDirection = xlDown
  '通常、下へ移動する設定にしているなら、元へもどす
End Sub

【46873】Re:EnterにTabの機能を割り付けたい
お礼  RDK  - 07/2/19(月) 14:34 -

引用なし
パスワード
   ▼りん さん:

察していただいた通り、会社で使用しているメインのバージョンは2Kです。
XPも何台かはあるので、教えていただいた保護のオプションも確認できました。

また、2Kで回答いただいたSendkeyメソッドのプログラムをそのままコピーしてでき
ました。

こんなに早く回答いただけてまことにうれしく思っています。
ありがとうございました。

【46874】Re:EnterにTabの機能を割り付けたい
お礼  RDK  - 07/2/19(月) 14:41 -

引用なし
パスワード
   ▼Kein さん:
返答ありがとうございます。

今回求めた回答としては、りんさんの回答の方が良かったのですが、
入力項目が限定されている部分ではこちらも便利そうだと思いました。

内容に応じて活用させていただきます。

ありがとうございました。

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