エクセル2000での質問です。
入力用シートと印刷用シートを作りました。
入力シートは、数個の入力欄のセルのロックのチェックボックスを外してシート保護しました。
tabキーで次の入力セルに選択セルが移動するようになりました。
入力欄(セル)に文字や数値を入力後、enterを押すと、次の入力欄に移動するにはどうすればよいのでしょうか?
今は、enterを押すと、保護されている使用しない下のセルに移動します。
週個の入力欄(セルは)隣接しておらず、シート上にまばらに配置してあります。
教えてください。よろしくお願いします。
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
返事が遅くなり失礼しました。
後半の方式は良いですね。同じ結果を出す方法も色々あるんですね。
No.2の方法も便利ですね。アップグレードしようかなぁ。(なんか金で解決するようで情けないカモ)
ありがとうございました。
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
ありがとうございます。
ひとまず教えていただいたマクロを動作確認しました。
エンターで次のセルに移動しますが、矢印キーで一つ前のセルに戻ろうとすると、エラーになってしまいました。
これからじっくり勉強しながら解いていきます。本当にお世話様でした。
No.6
- 回答日時:
>何行かに分けて記述するのでしょうか?分けてみたのでうが分け方が違うらしく同じくエラーでした。
あれ?エラーでしたか?
一度、コピペでそのまま試してもらえませんか?
>・記述するセルの順番がそのまま移動する順番になるのでしょうか?
いえ、左上から右下の方向に移動します。
>・このマクロを使用する場合でも、入力セルのロック解除は必要ですよね?
不要です。それをマクロがやってくれます。
お礼が遅くなりスミマセン。
動作しますが、自分の作業用シートに応用するとエラーします。
現在、マクロを勉強中ですので、基本的な構文を理解していない私のせいでしょう。もう少し勉強を進めた上で参考にさせていただきます。ありがとうございました。
No.5
- 回答日時:
No.2補足回答
質問文にある「入力シートは、数個の入力欄のセルのロックのチェックボックスを外してシート保護しました。」のシートを保護する時の話です。
「ツール」→「保護」→「シートの保護」で“シートの保護”というダイアログが開くと思います。このダイアログには
1)「シートとロックされたセルの内容を保護する(C)」というチェックボックス
2)「シートの保護を解除するためのパスワード(R)」というテキストボックス
3)「このシートのすべてのユーザーに許可する操作(O)」というチェックボックス群
があると思います。
3)のチェックボックス群の一番上に「ロックされたセル範囲の選択」というチェックボックスがあるはずなんです。デフォルトではチェックが入っていますので、このチェックを外してください。そうするとロックされていないセルにしか移動しなくなります。
ただしEnter押下時に下方向に移動する設定の場合に次の移動先は現在のセルから下方向に探し、なければ次の列を探すことになります。不都合でしたら、ツール→オプションの編集タグのところにある入力後にセルを移動する方向で調整して下さい。
ありがとうございます。
職場にエクセル2002があるので確認しました。
「シートの保護ダイアログ」がエクセル2000と結構違います。。
入力セルの移動する順番を変則的にしたい場合でなければ、この方法は簡単で有効ですね。
(2002で設定して、2000で開いて同じ状態になるかなぁ?)
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」を同じ位置にペアーで増やしていけば、相当数のセルの入力順序を制御
出来ます。
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
この回答への補足
ありがとうございます。
・実際は、入力シートに入力するセルは52個もあります。
構文が分かりません。全部記入したらエラーになってしまいました。
何行かに分けて記述するのでしょうか?分けてみたのでうが分け方が違うらしく同じくエラーでした。
・記述するセルの順番がそのまま移動する順番になるのでしょうか?
・このマクロを使用する場合でも、入力セルのロック解除は必要ですよね?
スミマセン。お時間がありましたら教えて下さい。
No.1
- 回答日時:
セル範囲を選択しておくと、Enterで選択範囲内だけを移動する事はご存知ですか?
これを利用して、
・非保護セルをすべて選択
・挿入→名前→定義
・名前:入力セル(←任意)
・追加→閉じる
として、入力開始時に、数式バーの左の、セル位置が表示されているところで、「入力セル」を選んでおくと、ご希望の動作になります。
これが面倒であれば、VBAでマクロを書くしかないかも・・・
頑張ってくださいヽ(^。^)ノ
ありがとうございます。
エクセルに詳しい方のマクロを使わないテクニックですね。参考になります。 只今、勉強中です。がんばります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) 【エクセル】文中に別シートのセルの内容を自動入力したい 6 2022/11/17 11:30
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Excel(エクセル) エクセルについて質問です。 8 2022/05/31 16:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
-1234 を (1234) と表記する由...
-
エクセルで現場ごとに機材の移...
-
他部署からもらう データで、 ...
-
Excel 1の位の数字で処理を分岐...
-
Excelのセルの色を変えた行(す...
-
エクセルの数式について教えて...
-
Excelでの記号と特殊文字につい...
-
とびとびの大量セルを選択した...
-
MACにおけるエクセルの入力トラ...
-
ある表にフィルターをかけて出...
-
Lookup関数
-
エクセルの数式バーのフォント...
-
再質問です。マクロの修正箇所...
-
エクセルで「ページレイアウト...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】VLOOKUPにて参照元に...
-
exselの質問です
-
エクセルでファイルの最終更新...
-
Excel 大小比較演算子による「...
-
エクセルの問題です。絶対値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報