• ベストアンサー

入力後enterを押すと、非保護の別セルへ移動したい。(エクセル)

エクセル2000での質問です。 入力用シートと印刷用シートを作りました。 入力シートは、数個の入力欄のセルのロックのチェックボックスを外してシート保護しました。 tabキーで次の入力セルに選択セルが移動するようになりました。 入力欄(セル)に文字や数値を入力後、enterを押すと、次の入力欄に移動するにはどうすればよいのでしょうか? 今は、enterを押すと、保護されている使用しない下のセルに移動します。 週個の入力欄(セルは)隣接しておらず、シート上にまばらに配置してあります。 教えてください。よろしくお願いします。

  • fsy
  • お礼率91% (225/246)

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

  • ベストアンサー
  • ta123
  • ベストアンサー率51% (95/186)
回答No.2

シートの保護で開くダイアログの「このシートのすべてのユーザーに許可する操作」の「ロックされたセル範囲の選択」のチェックを外しても可能です。 (EXCEL2002です)

fsy
質問者

お礼

ありがとうございます。エクセル2000を使用しています。 「ツール」→「保護」→「シートの保護」→? せっかく教えていただいたのにスミマセン。。

その他の回答 (7)

  • ta123
  • ベストアンサー率51% (95/186)
回答No.8

No.7補足 私も投稿してから気づいたので対処方法を考えていましたが、よい方法が見つかりませんでした。重ね重ね申し訳ありません。 なお、No.4の方の方法なら動きそうですがセル内容を更新したときだけに有効になります。単純にenter押下時は機能しませんでした。 No.3の方法に関して セルアドレスを複数行に記述したい場合は .Range("A1,A2,A3," _ & "A4," _ & "A5").Locked = False '←""内に移動したいセルを記入 となります。見やすく工夫する場合は const MyRnage="A1,A2,A3," _ & "A4," _ & "A5" .Range(MyRange).Locked = False 移動したいセル群に範囲名(例えば移動セル)をつけ、No.3を以下のように変える方法もあります。 Sub 入力限定()   With ActiveSheet      .Unprotect      .Cells.Locked = True      .Range("移動セル").Locked = False '←""内に移動したいセルを記入      .Protect      .EnableSelection = xlUnlockedCells   End With End Sub

fsy
質問者

お礼

返事が遅くなり失礼しました。 後半の方式は良いですね。同じ結果を出す方法も色々あるんですね。 No.2の方法も便利ですね。アップグレードしようかなぁ。(なんか金で解決するようで情けないカモ) ありがとうございました。

  • ta123
  • ベストアンサー率51% (95/186)
回答No.7

EXCEL2000では使えない回答をしてしまい申し訳ありません。 また、EXCEL2002での検証しかしておりませんがVBAでの方法を考えてみました。 ・本方式では、セル/シートのロックは不要です。(してもらってもOK) ・移動先の順序を指定可能です。 ・移動可能セル以外をマウスでクリックすると最初のセルに戻ります。 案 入力シートのシートモジュールとして以下を定義します。 VBEのプロジェクトエクスプローラ(通常は左側ウィンドウ)で目的の シート名をダブルクリックして開く右側のウィンドウに書き込む。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 移動先のセルアドレス(順序) Const MyRange = "A1,A2,A3," _ & "B1,C1,D1," _ & "D2,C2,B2," _ & "B3,C3,D3" MyRangARY = Split(MyRange, ",") mycelladr = Target.Offset(-1, 0). _ Address(ColumnAbsolute:=False, RowAbsolute:=False) n = 0 For i = 0 To UBound(MyRangARY) If mycelladr = MyRangARY(i) Then n = i + 1 Exit For End If Next If n > UBound(MyRangARY) Then n = 0 Application.EnableEvents = False Application.Goto Range(MyRangARY(n)) Application.EnableEvents = True End Sub 念のため、マクロを止めたい時のために標準モジュールも準備します。 Sub マクロ無効化() Application.EnableEvents = False End Sub Sub マクロ有効化() Application.EnableEvents = True End Sub

fsy
質問者

お礼

ありがとうございます。 ひとまず教えていただいたマクロを動作確認しました。 エンターで次のセルに移動しますが、矢印キーで一つ前のセルに戻ろうとすると、エラーになってしまいました。 これからじっくり勉強しながら解いていきます。本当にお世話様でした。

  • poteta
  • ベストアンサー率19% (5/26)
回答No.6

>何行かに分けて記述するのでしょうか?分けてみたのでうが分け方が違うらしく同じくエラーでした。 あれ?エラーでしたか? 一度、コピペでそのまま試してもらえませんか? >・記述するセルの順番がそのまま移動する順番になるのでしょうか? いえ、左上から右下の方向に移動します。 >・このマクロを使用する場合でも、入力セルのロック解除は必要ですよね? 不要です。それをマクロがやってくれます。

fsy
質問者

お礼

お礼が遅くなりスミマセン。 動作しますが、自分の作業用シートに応用するとエラーします。 現在、マクロを勉強中ですので、基本的な構文を理解していない私のせいでしょう。もう少し勉強を進めた上で参考にさせていただきます。ありがとうございました。

  • ta123
  • ベストアンサー率51% (95/186)
回答No.5

No.2補足回答 質問文にある「入力シートは、数個の入力欄のセルのロックのチェックボックスを外してシート保護しました。」のシートを保護する時の話です。 「ツール」→「保護」→「シートの保護」で“シートの保護”というダイアログが開くと思います。このダイアログには 1)「シートとロックされたセルの内容を保護する(C)」というチェックボックス 2)「シートの保護を解除するためのパスワード(R)」というテキストボックス 3)「このシートのすべてのユーザーに許可する操作(O)」というチェックボックス群 があると思います。 3)のチェックボックス群の一番上に「ロックされたセル範囲の選択」というチェックボックスがあるはずなんです。デフォルトではチェックが入っていますので、このチェックを外してください。そうするとロックされていないセルにしか移動しなくなります。 ただしEnter押下時に下方向に移動する設定の場合に次の移動先は現在のセルから下方向に探し、なければ次の列を探すことになります。不都合でしたら、ツール→オプションの編集タグのところにある入力後にセルを移動する方向で調整して下さい。

fsy
質問者

お礼

ありがとうございます。 職場にエクセル2002があるので確認しました。 「シートの保護ダイアログ」がエクセル2000と結構違います。。 入力セルの移動する順番を変則的にしたい場合でなければ、この方法は簡単で有効ですね。 (2002で設定して、2000で開いて同じ状態になるかなぁ?)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

VBAなら ワークシートのChangeイベントに下記を貼りつける。 Private Sub Worksheet_Change(ByVal Target As Range) p = Array("$A$1", "$C$1", "$B$3") q = Array("$C$1", "$B$3", "$A$1") For i = 0 To UBound(p) If Target.Address = p(i) Then Range(q(i)).Select Exit Sub End If Next i End Sub これで、A1->C1->B3->A1にENTERで動きます。 A1,C1,B3以外を保護してテストしてOKでした。 Pの()内に「From」、Qの()内に「To」を同じ位置にペアーで増やしていけば、相当数のセルの入力順序を制御 出来ます。

fsy
質問者

お礼

勉強になりましたありがとうございます。 ご教示いただいた例に質問したい点もたくさんありますが、自分でも調べていこうと思います。

  • poteta
  • ベストアンサー率19% (5/26)
回答No.3

VBAは分かりますか? 以下のVBAを実行すれば,設定したセル以外は移動しません。 #1さんの方法でも可能ですが,矢印キーを押したり,マウスで別のセルをクリックすると元に戻ってしまいますが,このVBAを実行すれば,別のセルをマウスでクリックしても移動すらできませんリターンキー,TAGキーだけでなく矢印キーでも使用可能です。 なお,一度実行しておけばOKです。 Sub 入力限定()   With ActiveSheet      .Unprotect      .Cells.Locked = True      .Range("A1,A2,A3").Locked = False '←""内に移動したいセルを記入      .Protect      .EnableSelection = xlUnlockedCells   End With End Sub 元へ戻すには Sub 入力限定解除()   With ActiveSheet      .Unprotect      .Cells.Locked = True      .EnableSelection = xlNoRestrictions   End With End Sub

fsy
質問者

補足

ありがとうございます。 ・実際は、入力シートに入力するセルは52個もあります。 構文が分かりません。全部記入したらエラーになってしまいました。  何行かに分けて記述するのでしょうか?分けてみたのでうが分け方が違うらしく同じくエラーでした。 ・記述するセルの順番がそのまま移動する順番になるのでしょうか? ・このマクロを使用する場合でも、入力セルのロック解除は必要ですよね? スミマセン。お時間がありましたら教えて下さい。

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

セル範囲を選択しておくと、Enterで選択範囲内だけを移動する事はご存知ですか? これを利用して、 ・非保護セルをすべて選択 ・挿入→名前→定義 ・名前:入力セル(←任意) ・追加→閉じる として、入力開始時に、数式バーの左の、セル位置が表示されているところで、「入力セル」を選んでおくと、ご希望の動作になります。 これが面倒であれば、VBAでマクロを書くしかないかも・・・ 頑張ってくださいヽ(^。^)ノ

fsy
質問者

お礼

ありがとうございます。 エクセルに詳しい方のマクロを使わないテクニックですね。参考になります。 只今、勉強中です。がんばります。

関連するQ&A

  • Excelでenterを押した後任意のセルに移動

    Excel VBAの初心者です、宜しくお願いいたします。 VBAで集計表を作成しているのですがExcelのオプションから設定してシートの保護で入力可能なセルを選びVBAを実行するとシートは保護されていますとメッセージが出て使えません。 A1を入力後EnterでA3へ移動、次にEnterでA6へとセルを移動させたいのです、VBAでの構文はどの様に作ればよいのかご伝授頂きたく宜しくお願いいたします。 Excel 2002、3、7を使用しています。  

  • Enterキーで順番にセルの移動する。

    Excel2013 Enterキーを押すと隣りのセルに移動ではなく、次に入力したいセルにカーソルが移動するようにしたいです。 たとえば、 必要事項を入力する書類で、B2のセルに入力したら次はD5のセルに入力、次はA6に入力といった書類あり、Enterキーを押して次の入力セルに移動するようにしたい。また、書類の書式を崩されたくないのでシート保護して使いたいです。 Enterで進み、戻る時はUPキーか、↑キーなどで設定したいと考えてます。 どなたか、VBで教えてくださる方お願いします。

  • エクセルのセルをENTERで指定箇所に移動させる

    ということをしたいと思っています。といっても、そんなにややこしい移動でなく、 A1B1,A2B2,A3B3というように、 右に一度進んだら斜め下に行く、という作業を繰り返したいだけです。 つまり、B列の入力をした後は必ずA列に戻って次の行から入力できる状態にしたいのです。 なお、移動にはENTERを使いたいと思っています。 CTRLで入力するセルに順番と名前をつけてやる方法を自分で見つけてやってみたのですが、 これだと、一度でもこの範囲内からはずれてしまうと、また一からの入力になってしまいますし、 理想はこのA列B列のどこから入力を開始しても、B列入力の後は次の行のA列に移動する、ということなのですが、、、。 入力しないセルをロックして保護する、という方法もやってみたのですが、私が何か間違っているのでしょうか、C列をロックしてもうまくいきませんでした。 なぜこのようなことをしたいかというと、誰でも使いやすいフォーマットを作っておきたいため、 このようにセル移動するシートを作成したいのです。 どなたかもしいい案があればどうぞお願いいたします。

  • 入力セルを限定して、Enterで次セルへジャンプ

    入力セルを限定し、enterで次セルへジャンプしたいのですが、セルのロックを外し、シート保護するやり方だと、セルの順番どおりにならず、、(A1→A5→B5→D1→D5→E5のような順番) また、名前ボックスでのやり方だと、2つ前のセルでデータ入力の間違いに気づいたりして、セルを戻すとすべての指定がはずれ、結局またセルを自分で指定しなくてはならず、、、。 これはやはりVBAとかでないとダメですか? また、できればシートを保護してセルの関数を消さないようにしたいのですが、、。

  • エクセル2007 セルの移動に関して 2つの移動方法の共存はできますか?

    エクセル2007 セルの移動に関して 2つの移動方法の共存はできますか? 同一シートに2つの移動方法を共存させたいのですが・・・ ※入力するセルはロックをはずしてのシートの保護をしています。 ■移動 → が 以下 B2→ D2→ F2→ H2 B4→ D4→ F4→ H4 ■移動 ↓ が以下 B6  D6 ↓  ↓ B8  D8 ↓  ↓ B10  D10 TAB と Enter での移動変化だけだとうまくいかないもので いい方法が ございましたら ご教授 おねがい いたします。

  • EXCELで特定のセルのみ移動するには?

    EXCELでセルの保護の解除を行います。 そしてシート全体の保護をします。 そうすると保護の解除をしたところしか上書きできなくなります。 ここまでは分かるのですが、ロックの解除を行ったセルのみENTERキーで順番に移動させるような設定は出来ますか? なおかつ移動の順番などを指定したり出来ますか? もしも出来るようであれば、そのやり方を教えてください。

  • セル保護してしない部分のみ、エンターキーを押して移動するようにする方法は?

    エクセル2003の保護の機能について、セルの書式設定から保護タブでロックしてからシートの保護を行いましたが、セルの保護していないセル以外にセル保護した箇所にもエンターキーを押したら移動してしまいます。セル保護していないセルにのみカーソルを移動させる方法ないでしょうか? それとセルの書式設定から保護タブでロック下に表示しないにチェックするとどういう影響があるのでしょうか?

  • セルの移動

    セルの移動ですが、セルの書式設定でロックのチェックを外してシート保護をかけた場合ですが、結合したセルがある場合結合したセルの数だけEnterキーを押さなければ次のセルに移動しません。結合した場合でも1回のキー操作で移動する方法はありますか?教えて下さい。

  • セルに数値を入れた場所に保護を掛けたいのですが

    セルの書式設定でも、保護の「ロック」の欄にはチェックをつけてありますが シートの保護をしても、そのセルの数値を変えることができてしまう、という状態になっています。 虫食いのように数値を入れたいので 問題のセルの一つ上のセルや下のセルは「保護」の「ロック」を掛けていません。 表示形式は「数値」にしています。 以前に一度、数値を入れる列はロックをはずしています。 その後、動かす必要のない数値が入っているセルだけを「保護」「ロック」をかけました。 「シートの保護」を選択した際、「このシートのすべてのユーザーに許可する操作」の「ロックされたセルの選択」タグのチェックをはずすと、(ロックされても数値の変更が可能なセル)は選択できなくなります。 ちなみに、一番上の「シートとロックされたセルの内容を保護する」にはチェックが入っています。 いままでした考えられる操作はこれぐらいです。 問題のセルの数値を保護するためにはどうしたらいいのでしょうか。

  • エクセルの入力でセル移動

    MSのエクセルで、セルに指定された文字数を入力したらEnterや矢印キーを押さなくても次のセルに移動させる方法はないでしょうか? 例えばA1セルに入力出来る文字数は3と指定しておきます。A1セルに3文字入力したら、次のセルA2に移動するようにする方法です。入力規則で文字列指定まではできますが、次にセルに移動するにはEnterなどが必要です。これを省略する方法です。 バージョンは2003ですが、2007,2010でできるのでしたらそのバージョンでも構いません。

専門家に質問してみよう