特定のセルのカーソル移動

このQ&Aのポイント
  • エクセルの表で特定のセルのカーソル移動を実現する方法について教えてください。
  • 年配の方が使いやすいエクセルの表で、保護をかけずに特定のセルのカーソル移動を行いたいです。
  • VBを用いて簡単なメッセージでエラーを表示し、C6とE6のセル間でカーソルを移動したいです。
回答を見る
  • ベストアンサー

特定のセルのカーソル移動

こんばんは。教えてください。 入力可能なセルが2個だけのエクセルの表があります。 C6には「年」、E6「日付」が入ります。 それ以外のセルに触ると「ここは入力できません」と 表示が出て、C6にカーソルが戻ります。 VBにて作成してあります。 実は、この表は年配のパソコンがほとんど分からない方が 使う表で、保護をかけた時のエラーの長い文章が出ると パソコンが壊れたと思うらしく、わざと、保護はかけずに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range("A1:IV5,A6,B6,E6,H6:IV6,A7:IV65536")) Is Nothing Then Else MsgBox "「年」と「月」以外の欄には入力できません" Range("C6").Select End Sub と入れて、簡単なメッセージでエラーを伝えるのみで シートの保護はしておりません。 これに追加して、記載することで、 C6のセルに入力後、「enter」を押すとE6にカーソルが移動 E6のセルに入力後、「enter」を押すとC6にカーソルが移動 が出来るようにしたいのです。 つまり、C6に入力したらE6に、E6に入力したらC6にカーソルが 「入力できるセル」だけを行き来したいのです。 どなたか教えてください。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

C6 と E6 の [セルの書式設定] で [保護] タブで [ロック] のチェックを外す。 [シートの保護] で "ロックされていないセル範囲の選択" だけにチェックを入れる。 で好みの動作は実現できてませんかね。 ・ C6 と E6 以外をマウスでポイントしても選択できない。 ・ その際に警告も出ない。 ・ カーソルキーや [Enter] を押しても C6 と E6 の間を行き来するだけ。 HARRYDASU さんのイメージ(というか既に実装している部分)との違いは、HARRYDASU さんの場合は C6 や E6 を選択すると警告がでて強制的に C6 へジャンプ。 私の回答だと C6 と E6 しか選択できない。それ以外をマウスでポイントしようにも選択できないし、警告も出ない。 この違いを運用で吸収できるかどうかってところですかね。

HARRYDASU
質問者

お礼

お礼が遅くなりましてすみません。 temtecomai2さんのやり方で、思うとおりの作動です!! お恥ずかしいことに・・・ "ロックされていないセル範囲の選択" のやり方を 知らなかったので、こんなやり方があるんだ! と感激してしまいました。 勉強になりました。 ご回答ありがとうございました。

関連するQ&A

  • VBでのカーソル移動

    こんばんは。 教えてください。 入力可能なセルが2個だけのエクセルの表があります。 C6には「年」、E6「日付」が入ります。 それ以外のセルに触ると「ここは入力できません」と 表示が出て、C6にカーソルが戻ります。 VBにて作成してあります。 ここで、追加で、 C6のセルに入力後、「enter」を押すとE6にカーソルが移動 E6のセルに入力後、「enter」を押すとC6にカーソルが移動 が出来るようにしたいのですが、どのように記入したらいいか 分かりません。 どなたか教えてください。

  • エクセルで指定したセルへカーソルを移動させる

    エクセル2007で セル”I1”に文字を入力してエンターを押したら、“B11”へセルを移動させたく、 以下のように作ってみたのですが、 反応してくれません。 このVBAもインターネット上にあったものを参考にしただけなので、 何が悪いのかさっぱりわかりません。どこを修正したらよいのか教えてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Address(0, 0) Case "i2" [b11].Select End Select End Sub

  • 空白状態でEnterを押したら指定のセルに飛びたい

    例えばF5セルで何も入力せずEnterを押したらC9に入力セルを飛ばしたくて 自分の力で調べた限りでは下のコードで可能なのですが Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Range("F5,C9") If Not Intersect(Target(1), .Cells) Is Nothing Then Application.EnableEvents = False .Select Target(1).Activate Application.EnableEvents = True End If End With End Sub 上記コードはF5セルを選ぶと、次に飛ぼうとするC9セルが見えてしまいます。 これが見えずにできる他の方法があるか色々調べても見つかりませんでした; 何か可能な策はありますでしょうか・・?

  • カーソルの移動制限

    ウィンドウズXPでエクセル2003を使用し切手受払帳を作成しています。A1は頭文字(半角カタカナ)、B1は取引先名、C1とD1はセルを結合し日付、E1は10円、F1は20円と続きN1ハガキまでタイトルを入力しています。A2,B2と入力しC2に数字を入力しした後Enterを押すと自動的にE2にカーソルを移動するようにしたいのです。D2には日と入力しています。またE2~N2まで入力すると自動的にA3にカーソルが移動するようにもしたい。さらに画面下の行(例えば20行~40行)を書式→行→表示しないで表示させないようにしたいので、カーソルを移動させたい範囲のセルのロックをはずし、ツ-ル→保護→シートの保護でカーソルの移動を制限する方法は使用できないのです。わかりにくい説明で申し訳ありませんが教えてください。

  • カーソルを動かしたときは発動させたくありません

    エクセルの Worksheet_SelectionChangeイベントで --------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then MsgBox "$A$1です" End If End Sub --------------------------------------------------------- のコードを標準モジュールに書いて、A1セルをクリックすると、MsgBoxが表示させますが、 B1セルから、キーボードの「→」キーを押してA1に移動してもMsgboxが表示されてしまいます。 クリックした時はマクロを発動させたいのですが、カーソルを動かしたときは発動させたくありません。 そんな事は可能でしょうか?

  • VBA入力なしのエンターでのセル移動

    VBA初心者です。 エクセル2010使用してるのですが チェンジイベントで入力時エンターで以下のように動きますが 入力なしのエンターでC5セルに移動させるには どのような方法があるのでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$H$5" Range("C8").Select End Select End Sub よろしくお願いいたします。

  • マクロ、カーソルの相対移動

    下記マクロはカーソルの相対移動で教えいいただいたものです。 セルに値を入力しないで、Enterを押下した時もこのように動作させるためにはどのように記述したらいいでしょうか。教えてください。よろしくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) if Target.Column = 2 Then Cells(Target.Row,5).Select if Target.Column = 5 Then Cells(Target.Row,7).Select if Target.Column = 7 Then Cells(Target.Row + 1, 2).Select End Sub

  • マクロでのカーソル移動

    ブック内の全シートを対象としたマクロで、たとえば (A1)セルに入力後Enterで(C1)セルにカーソルを移動させるにはどのように記述したらよいでしょうか。よろしくお願いします。

  • Excelで書込禁止メッセージを指定したセル以外で出したい

    教えてください。 エクセルで下記のような簡単なシートがあります。 ********************************* 料金マクロ (セル:C6)年(セル:F6)月 [印刷ボタン] ********************************* (VBAにて「印刷ボタン」を押すと他のファイルを読みに行って印刷できるようになっています。) 入力可能なのは「C6」と「F6」のセルだけで それぞれ年・月(例:「07」年「10」月)を入力できるようにしたく、 そのセルだけを入力許可して保護をかけました。 その他のセルはどこを触っても、禁止メッセージを表示したいです。 しかし、エクセルにメッセージ「変更しようとしているセルまたはグラフは・・・・・・」 という、エクセルで「保護」した時の書込禁止メッセージではなく、 年配の方が使うファイルなので、わかりやすいメッセージにしたくて 色々調べてみました。 その結果、保護ではなく、 シートモジュールに入力することで対応できることを知り、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range("A1:IV100")) Is Nothing Then Else MsgBox "年・月以外は書込みできません" Range("C6").Select End If End Sub としてみました。 (A1:IV100の範囲で書込み禁止エラーがでる。その後、カーソルが「C6」のセルに戻る。) この状態だと、戻る「C6」には、入力ができますが 「F6」への入力ができません。 「C6」・「F6」を両方入力を可能にするにはどうしたらいいですか? どなたかお詳しい方、教えてください。 この方法にこだわっているわけではないので、 もし、別のいい案がございましたら、 方法が変わってもかまいません。 お手数お掛け致しますが、よろしくお願いいたします。

  • セルに入力された値を別セルに条件付で転記したい

    エクセルにおいて、 セルのA1に 1 と入力したら セルA2に 半角で Q00000001と表示 セルのA1に 10 と入力したら セルA2に 半角で Q00000010と表示 セルのA1に 100 と入力したら セルA2に 半角で Q00000100と表示させたいです。 先頭は必ずQで計9桁でセルA1の入力値がみたない場合0で埋める。 これを行う一番いい方法は何がありますでしょうか? できたらセルには式は入れたくないです。 そのエクセルには Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call ●● End Sub  が入っています。 シート保護をかけて セルA1とB1しか入力できないようになっています。 今はセルB1に入力するとマクロ●●が走って セルB2にマクロのSelect Caseで変換された値が転記されるようになっています。 もうひとつマクロを作って Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call ●● Call ●●2 End Sub がいいでしょうか? その場合、そのマクロの記述そのものを教えてください。  お願いします。

専門家に質問してみよう