- ベストアンサー
指定以外のセルからの移動
入力するセルが数箇所(場所は離れた所)と決まっています。 入力するセル以外にはロックをかけて、ctrlを押しながら選んでおくと、セル入力でEnterを押すと、選んでおいたセルに移動することは、他のスレから教えていただいたのですが、逆に入力するセル以外をクリックなどで選択してしまった場合、ある決まったセルへ自動的に戻るような方法はないでしょうか? 例)入力するセルは、A1,B2,C3の3つ この3つのセル以外を選択すると、自動的にA1に戻るようにしたい。 回答よろしくお願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
> 結合させていても1回のEnterで次のセルへ移動してくれれば... 入力したあと、[Enter] ではなく、[Tab]キーならどうでしょうか? [Enter] で...ということであれば、他回答者様が提示されている 方法にするか、または併用するのが良いと思います。 > あと、同じbookの他のシートにも同じようにするには... Thisworkbook モジュールに次のように書き込めば、ブック内の全て が対象になります。 Private Sub Workbook_Open() Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets sh.EnableSelection = xlUnlockedCells Next End Sub
その他の回答 (8)
直接の回答ではありませんが... 私の場合、エクセルにマクロは極力使わないようにしています。 マクロが入っていると、PCのセキュリティーレベルによっては 「このファイルはマクロが入っている。ウイルスかも知れない」という 警告メッセージが出ます。 自分一人で使う分には構わないのですが、職場などで他の方々もつかう環境では、 「ウイルス」という語句に過剰反応して「ウイルスが入っている!」と騒ぐ人が 必ずいます。(特に年配の上司) 老婆心ながら...
- KenKen_SP
- ベストアンサー率62% (785/1258)
> 実際のシートでやると、同じところを行ったり来たり(A1とB2しか往復しない)してしまいます。 > 実際のシートはセルの結合を行っているからでしょうか。 ・結合セルがきちんと「ロック解除」されてますか? ・他のマクロが動いてませんか? すみません、こちらでテストする限り問題ないので、これ以上 は何ともアドバイスできそうもありません。。
補足
ありがとうございます。 「A1とB2を行ったり来たり・・・」の件ですが、 Enterキーを押し続けると、C3にも移動することが分かりました。 例えば、A1を他の3つのセルと結合させていると、3回Enterを押すと次のセル(B2)に移動しました。 結合させていても1回のEnterで次のセルへ移動してくれれば完璧なんですが。 あと、同じbookの他のシートにも同じようにするには、どう書き込めばいいのでしょうか? (別シートの移動したいセルは全て異なります)
- don9don9
- ベストアンサー率47% (299/624)
No.1,4です。 No.5さんの方法でExcel2000でも出来ます(確認しました) 私も知らなかったので勉強になりました。
- KenKen_SP
- ベストアンサー率62% (785/1258)
> この3つのセル以外を選択すると、自動的にA1に戻るようにしたい。 逆に、ロックされたセルは「選択できない」ようにするとか。 目的によっては、向かないかもしれませんが、紹介しておきます。 1. ThisWorkbook モジュールに下記のコードをコピペ 2. ブックを保存し、開き直す 3. Sheet1 を保護します Private Sub Workbook_Open() Worksheets("Sheet1").EnableSelection = xlUnlockedCells End Sub なお、この機能はシートが保護されている時のみ、有効なので、 保護解除すれば、また全てのセルが選択可能になります。 # Excel2000 に EnableSelection プロパティーがあったかは # 覚えてません。。
お礼
ありがとうございます。 思っていたとおりの動作になりました。
補足
お礼の方、間違って書き込みしてしまいました。 選択できないようにするという逆の発想もあるんですね。 サンプルでやった無地の新規シートでは、お礼に書いたとおりうまくいったのですが、 実際のシートでやると、同じところを行ったり来たり(A1とB2しか往復しない)してしまいます。 実際のシートはセルの結合を行っているからでしょうか。
- don9don9
- ベストアンサー率47% (299/624)
No.1です。 No.2さんの方法はExcel2000では出来ませんので、VBAになりますね。 以下のような感じでしょうか。 「選択したセルがロックされている場合、A1を選択する」 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Locked = True Then Range("A1").Select End If End Sub
お礼
ありがとうございます。 思っていたとおりの動作になりました。
- zap35
- ベストアンサー率44% (1383/3079)
入力シートの「シート名右クリック」→「コードの表示」で開く画面に以下のマクロを貼り付けます。シートに戻って動きを確かめてみてください Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim r As Range Set r = Intersect(Target, Range("A1,B2,C3")) If r Is Nothing Then Range("A1").Select End Sub
お礼
ありがとうございます。 思っていたとおりの動作になりました。
- Cupper
- ベストアンサー率32% (2123/6444)
いくつか勘違いされているようですね。 >入力するセル以外にはロックをかけて~ これは、ロックされたセルの選択をしないように指定して【シートの保護】を掛けた場合に有効になる方法です。 シートを保護した場合、EnterキーやTabキーを押すとロックの掛かっていないセルの間を移動するようになります。 ロックされたセルを選択できるままシートの保護を行なうと、Tabキーでロックされていないセルの間を移動するようになります。 この場合、Ctrlキーを押しながらロックされたセル範囲も選択することができます。ただし入力や編集はできません。 ロックされたセル範囲を選択しないように設定してシートを保護することをお奨めします。 ちなみに、セルの保護(ロック)の状態を監視しつつ、 >例)入力するセルは、A1,B2,C3の3つ > この3つのセル以外を選択すると、自動的にA1に戻るようにしたい。 このような動作はマクロを記述してVBAで行なう以外に方法はありません。 残念ですが、自分はVBAには詳しくないため上記の方法を示すことができません。 他の方の回答を参考にしてください。 ※シートの保護 ツール → 保護 → シートの保護 → (ロックされたセル範囲の選択のチェックマークを外すなど) → OK
補足
省略して書いていました。 すいません。 ロックをかけて・・・→保護のロックのチェックを入れて、シート保護 までを「ロック」の一言で書いてしまいました。 文章ですので、こと細かく正確に書かなければいけないですね。 VBAしか方法はないですか・・・。
- don9don9
- ベストアンサー率47% (299/624)
Excelのバージョンは何ですか? 私が使っているExcel2003では、 特定セル以外は選択できないように出来ますが。
補足
すいません。 エクセルのバージョンは2000です。
お礼
ありがとうございます。 他の回答と併用&入力後のセルの移動方向の変更などを組み合わせて、思い通りにできました。 大変たすかりました。 他の回答者様も含めて、ありがとうございました。