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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>また、名前ボックスでのやり方だと、2つ前のセルでデータ入力の間違いに気づいたりして、セルを戻すとすべての指定がはずれ、結局またセルを自分で指定しなくてはならず、、、。



入力中に間違いに気がついて、セルを戻したいなら、Shift+Tabキーの操作でセル範囲を解除することなくセルを移動することができます。
次に再入力するときは、Tabキーで入力セルまで移動します。
    • good
    • 0

指定したセルへの入力をするのは、決まったときだけですか?


それか、誰もが入力できなくなるようにしたいのですか?

誰もが入力できなくなる方法・・・は、ありますよ。
質問の文章にある、[シートの保護]ですね。
でも、それをすると、必ずそのセルへの入力しかできなくなりますし、列や行の挿入もできなくなりますが、それでもよかったら、参考にしてください。

シートを保護する前に、入力したいセルだけを入力できるように保護をはずします。
入力したいセルを選択して、[セルの書式設定]の[保護]タブで[ロック]をはずします。
この操作は、入力したいセルすべてにしてください。
その後にシートを保護します。
[ツール]メニューの[保護]-[シートの保護]をクリックし、ダイアログボックスが表示されたら、[OK] をクリックします。
保護を解除するときは、[ツール]メニューの[シートの保護を解除]をクリックしてください。

でも、この操作では、シートの削除を防止するものではないので、シートの削除は注意してください。
    • good
    • 0
この回答へのお礼

回答、有難うございました。
シート保護にすると行や列の挿入ができないんですよね、、。
そのつど、保護を削除するのも面倒なので、なんとかできればと思ったのですが。

お礼日時:2011/04/10 23:51

エクセルは入力の都合などにより入力セルのアクチブにする順序を規制したり出来ません。

エクセルは平板的であるが、素人にはなじみやすいものになっている。
エクセルにあまり期待して、あれもこれもと要求しすぎだと思う。
ーー
そこにもユーザーフォームやデーターフォームもあるのでそういうものを使う人もいるだろう。
ソフトによっては、入力はフォームで、保存ファイルの項目順序や内容は別に設定の類もおおい。
ーー
エクセルVBAでもChangeイベントでコントロールが出来るが、使い続けていると不便な点が出てくるように思う。
ーー
CTRLキーを押しつつ、複数セルを順次1つづつ指定し、再度始めのセルをクリックして、そこからデータ入力+ENTERで次のセルに移るから、データ入力を続けられるが、こういう方法の応用はいかがかな。
動く方法が決っているので、行や列的に逆戻りなどは出来ないので順序を完全には指定できないと思うが。
ーー
この質問には質問の事が1回限りなのか、別シートでも続けて同じことをするのか書いてない。もう少し全体の流れを質問に書いて質問しないと、回答がピントハズレになるかも。。
    • good
    • 0
この回答へのお礼

回答、有難うございます。

>エクセルは入力の都合などにより入力セルのアクチブにする順序を規制したり出来ません。
そうなんですか、、。

>エクセルにあまり期待して、あれもこれもと要求しすぎだと思う。
なるほど、、。エクセルは何でもできそうな感じがするのですが、、(笑)

やはり、名前ボックスでやっていくしかないようですね。
でも、勉強になりました。
有難うございました。

お礼日時:2011/04/10 23:55

VBAで 入力されたセルのアドレスを判断して


条件で 左へいくつ 下へいくつ といったコードを書いていくことに
なります。

ところで別案ですが
入力シートと表示シートを分けることは出来ないでしょうか。
一例ですが
入力シート
 A  B    C
日付 仕入れ 売り上げ
4/1  100   120
・・・

報告書
 A  B C   D
4/1 日付   4/2日付
・・・・
・・・・
仕入れ 売り上げ 
100    120
こんな感じだったとして
A1、A5、B5セルにいれる関数を準備して
左へ目いっぱいコピーしておく方法です。
データはひたすら縦方向へいれてくべきと思っていただいたほうが
後々、色々な集計や分析にも使えて便利になります。
    • good
    • 0
この回答へのお礼

回答、有難うございます。
たしかに、データー入力用セルにどんどん入力して、その値を参照させていったほうが、手早く入力できますね。
納得です。

有難うございました。

お礼日時:2011/04/10 23:58

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Excel】選択したすべてのセルを絶対参照にする方法

ExcelでF4を押せばセルを絶対参照に変えられますが、複数のセルを同時に絶対参照に変える方法を教えてください。

Aベストアンサー

こんばんは!
一例ですが・・・
Ctrlキーを押しながら、範囲指定(飛び飛びでも構いません)した後に
F4キーを押してみてください。
これでOKかと思います。m(__)m

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

エクセル2000での質問です。

入力用シートと印刷用シートを作りました。
入力シートは、数個の入力欄のセルのロックのチェックボックスを外してシート保護しました。

tabキーで次の入力セルに選択セルが移動するようになりました。

入力欄(セル)に文字や数値を入力後、enterを押すと、次の入力欄に移動するにはどうすればよいのでしょうか?

今は、enterを押すと、保護されている使用しない下のセルに移動します。

週個の入力欄(セルは)隣接しておらず、シート上にまばらに配置してあります。

教えてください。よろしくお願いします。

Aベストアンサー

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

Q別シートのセルを絶対参照にする

office2007、Excelで別シートのセルを絶対参照する方法を教えて下さい。
セルに「=シート名セル番地」を力した場合は、
セル番地を$で絶対参照にしても
参照先シートのその上に行を挿入すると
$A$5を指定していても行を挿入した場合は
自動的に$A$6になってしまいます。
別シートに行を挿入しても参照先のセルを固定する方法を教えて下さい。

Aベストアンサー

INDIRECT関数なら、文字列として範囲を指定できるので、行挿入や列挿入で勝手に指定範囲が変わることはありません。

例:
 INDIRECT(参照文字列,参照形式)
 と、使います。
 =INDIRECT("Sheet1!A1",TRUE)


※ INDIRECT関数の詳細は Excelのヘルプや解説サイトなどで確認してください。

Qエクセル あるセルに文字を入力した後ボタン一つでそのセルを入力の状態ではなく只その同じセルを選択している状態にしたい

選択したセルに文字を入力するときF2キーで入力できるようになると思うのですが、その逆をやりたいのですが、ボタンひとつできる方法はありますか。入力して縦線が点滅しているのを、ただセルを選択した状態にしたいのです。
今はいったんenterかtabを押してから、矢印キーで再度そのセルに戻っているのですが、ボタンひとつでできる方法があると面倒でなくなると思うので。
具体的には入力した直後に、そのセルをコピーして別のセルに貼り付けたいのです。
ちょっと分かりづらくて申し訳ありませんが教えてください。

Aベストアンサー

CtrlキーとEnterを同時押しすればセル移動しませんよ。

Qexcel 割引率のセルを絶対参照した場合の式は?

下記で、D2の15%のセルを絶対参照にした場合、式はどのようにすればいいでしょうか。
例)
絶対参照にするセル D2 15%(割引率) 
          B4~B7 元値
          C4~C7 結果 
自分では・・・ 
C4=B4-B4*$D$2 で入力してみたのですが、他に式はありますか。

絶対参照にしない場合は、C4=B4*(1-0.15)でやってみました。
いずれも自信はありません。
よろしくお願いします。

Aベストアンサー

一例です。
小数点以下四捨五入、=ROUND(B4*(1-$D$2),0)
小数点以下切り上げ、=ROUNDUP(B4*(1-$D$2),0)
小数点以下切り捨て、=ROUNDDOWN(B4*(1-$D$2),0)

Q任意のセルを検索窓にして文字(ひらがな)を入力すると既記入のセルを探しそのセルの横のセルに飛びたい

当方、エクセル2013 です。ほとんど初心者です。
表題のような事って出来るでしょうか?いちいちマウスを使うこと無く出来れば良いなと思っております。
画像で言いますとA1に「かけふ」といれるとD5に飛び、ここに数字を入れると又、勝手にカーソルがA1に戻る。って出来ないでしょうか?教えて下さい。

Aベストアンサー

こんばんは!
VBAでの操作になりますが、一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range
If Intersect(Target, Union(Range("A1"), Range("D:D"))) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Column = 1 Then
If .Value <> "" Then
Set c = Range("C:C").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(, 1).Select
Else
MsgBox "Not Found"
.Select
End If
End If
Else
If IsNumeric(.Value) Then
Range("A1").Select
Selection.ClearContents
Else
MsgBox "数値を入力してください"
.Select
End If
End If
End With
End Sub 'この行まで//

こんな感じではどうでしょうか?m(_ _)m

こんばんは!
VBAでの操作になりますが、一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range
If Intersect(Target, Union(Range("A1"), Range("D:D"))) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
...続きを読む

Qエクセルで複数のセルの絶対参照を一度に外す方法

宜しくお願いします。

複数のセルに例えば 

”$A3$*D3”

という式が入っていて、一度に

”A3*D3”

にする方法というのはあるのでしょうか?

私はいちいちセルをアクティブにして、F4キーで絶対参照を
外すというのを各セルごとに行っているのですが、
一度に置換か何かで”$A3$”を”A3”にすることは出来ないでしょうか

教えてください。
宜しくお願いします。

Aベストアンサー

解っているんでは、??。
編集⇒置換⇒検索する文字 $
置換する文字 (空白にして) カーソルをここに入れる(あわせるとも言う?) ⇒全て置換

これで、終わりです。

QExcel VBA あるセルでENTERを押すと特定のセルへ移動したい

Excel VBAで例えばセル"A2"をセレクトしている状態で
「ENTER」を押すとB5に自動的にセレクトすることはできないでしょうか?

Worksheet_Change関数を使おうと思ったのですが
"A2"の中身が変化しないと発動しません。

Worksheet_SelectionChange関数を使って"A2"を選択している状態で「ENTER」を押すと"A3"が選択されることを利用し、
「"A3"が選択されたら"B5"に飛ぶ」
も考えたのですが、マウスやキーボード操作で"A3"を
選択すると"B5"に飛んでしまうので、これも使えません。

何か対策案はないでしょうか。ご教授よろしくお願いします。

Aベストアンサー

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  Case xlDown
    ActiveCell.Offset(1).Select
  Case xlToRight
    ActiveCell.Offset(, 1).Select
  Case xlToLeft
    ActiveCell.Offset(, -1).Select
  Case xlUp
    ActiveCell.Offset(-1).Select
  End Select
 End If
End Sub

Sub SetKeys()
  '設定用
  Application.OnKey "~", "ReturnDirectrion2SelectCell"
  Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell"
End Sub
Sub SetOffKeys()
 '解除用
 Application.OnKey "~"
 Application.OnKey "{Enter}"
End Sub

'-----------------------------------------

自動設定が必要な場合は、以下のコードを加えてください。

'-----------------------------------------
'<標準モジュール>
Sub Auto_Open()
 Call SetKeys
End If
Sub Auto_Close()
 Call SetOffKeys
End If
'-----------------------------------------

なお、現在の設定では、全てのブックの全てのシートに同じように適用されます。Auto_Open等の代わりに、例えば、Worksheet_Activate や Workbook_SheetActivateなどに、SetKeysをCall し、Worksheet_DeactivateやWorkbook_SheetDeactivateに、SetOffKeysをCallするようにすると良いと思います。

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  ...続きを読む

Q多数のセルに入力してある数式を$を使わずに絶対参照コピーする方法

 初めて質問いたします。
 技術系計算をエクセルで組み立てる際、多数のセルに入力されている相当長い数式等を$を使用することなくコピーする方法を教えてください。
 以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 
 多数のセルを対象にしていますのでF4 キーによる変換では相当な時間がかかるので投稿しました。
 宜しくお願いいたします。

Aベストアンサー

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのかもしれませんが、現実に困っていない状況から、はっきりしていない記憶の中から、他人の独特のテクニックを導きだすからです。

以下の方法も定番とはいえません。

一旦、文字化させておいて、貼り付け、それを「区切り位置」ボタンで、一気に数式化させるというテクニックかもしれません。

具体的には、数式を置換で、「=」 --> 「'=」 と全体を全て置換します。そして、その範囲をコピーして、目的の場所に貼り付け、「区切り位置」で、「完了」をクリックします。
コピー元も同じく、「区切り位置」で元に戻します。ただし、これは一列に限ります。

他にも同種の特殊なテクニックもありますし、概ね、マクロ化も可能ですが、こういうことは、めったに必要ありません。実は、左側の数式は、右の数式と等価ですから、数式はひとつだけでよいわけです。

 A1方式  R1C1方式
--------------------------
=B1+C1   =RC[1]+RC[2]
=B2+C2   =RC[1]+RC[2]
=B3+C3   =RC[1]+RC[2]

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのか...続きを読む

Q入力したいセルへEnterをクリックして移動

入力したいセルのみEnterキーで移動したいのですが、
出来ますか。
D4からスタートし(D4からH4)まで結合
D5 (D5からH5)まで結合
D6 (D6からH6)まで結合
A7 (A7からC7)まで結合
D7 (D7からH7)まで結合
D8 (D8からH8)まで結合
D9 (D9からH9)まで結合
D10 (D10からH10)まで結合
D12 (D12からH12)まで結合
D14-E14-F14-G14-H14
D16-E16-F16-G16-H16
B19 (B19,C19)結合
B20 (B20,C20)結合
B21 (B21,B22)結合
C21 (C21,C22)結合
D19 (D19からD22)まで結合されています
まだ続きが沢山ありませが、上記の順で移動させようと、
過去の質問回答をいろいろ実行したところ、
私には、VBAは難しくてエラーが出たり、
セルの結合がある場合思うように移動してくれなかったりして
どうにも成りません、何方か出来るだけ簡単に解り易く説明して頂けませんか。

入力したいセルのみEnterキーで移動したいのですが、
出来ますか。
D4からスタートし(D4からH4)まで結合
D5 (D5からH5)まで結合
D6 (D6からH6)まで結合
A7 (A7からC7)まで結合
D7 (D7からH7)まで結合
D8 (D8からH8)まで結合
D9 (D9からH9)まで結合
D10 (D10からH10)まで結合
D12 (D12からH12)まで結合
D14-E14-F14-G14-H14
D16-E16-F16-G16-H16
B19 (B19,C19)結合
B20 ...続きを読む

Aベストアンサー

修正しました。
法則性があるようなので、全てのセルを書かず、計算で求める様にしました。
(初歩的な命令を複雑に組み合わせているだけですので
 少し勉強すれば、読めるようになると思います。)
(勉強の為、少し統一性の無い書き方をしてあります。
 いろいろな書き方が出来る例です)
デバッグしやすいように、全てのマクロを修正(追加)しています。
(Set_cellのマクロ以外は、Debug.Printの1文を追加しただけです)
Debug.Printはデバッグの為の命令です。
プログラムが、目的通り動いたら(いろいろな状況を試した後)削除してください。

方法が書いていないものは、既に教えてあるものですので、
今までの回答を見てください。
1.まずは下のコード(マクロ・プログラム)を規定の位置に貼り付けてください。

2.VBEの画面で、「イミディエイト ウィンドウ」が表示されているか確認し、無ければ表示してください。

3.EXCELの画面に戻り、EXCELの画面を小さくし、
  VBEの「イミディエイト ウィンドウ」が見える状態にして下さい。

4.「Sheet(Ver(2))」シートをアクティブにし、
  ブックを上書き保存してブックを閉じ再度開いてみてください。

5.「イミディエイト ウィンドウ」に「Workbook_Activate マクロセット」
  と表示されれば、Workbook_Activateが起動されています。

6.D4にカーソルを移し、[ENTER]を押してください。

7.「イミディエイト ウィンドウ」に「Set_Cell:D4」
  と表示されれば、Set_Cellが起動されています。

8.順に[ENTER]を押して、希望通りの動きをするか確認してください。

9.他のシートを選択したり、新規ブックを開いたりした時に
  「イミディエイト ウィンドウ」にマクロ解除の文字がでるか
  また「Sheet(Ver(2))」シートに戻った時にマクロセットの
  文字が出るか確認してください。

'***************** Sheet(Ver(2)) 内 ***********
'シートがアクティブになった(選択された)時
Private Sub Worksheet_Activate()
  Debug.Print "Worksheet_Activate マクロセット"
  Application.OnKey "{ENTER}", "Set_Cell"
  Application.OnKey "~", "Set_Cell"
End Sub

'シートがアクティブでなくなった時
Private Sub Worksheet_Deactivate()
  Debug.Print "Worksheet_Deactivate マクロ解除"
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
End Sub

'***************** ThisWorkbook 内 ***********
'ブックがアクティブになった時
Private Sub Workbook_Activate()
  Debug.Print "Workbook_Activate ";
  'アクティブになっているシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then
    Debug.Print "マクロセット";
    Application.OnKey "{ENTER}", "Set_Cell"
    Application.OnKey "~", "Set_Cell"
  End If
  Debug.Print
End Sub

'ブックがアクティブでなくなった時
Private Sub Workbook_Deactivate()
  Debug.Print "Workbook_Deactivate ";
  'アクティブだったシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then
    Debug.Print "マクロ解除";
    Application.OnKey "{ENTER}"
    Application.OnKey "~"
  End If
  Debug.Print
End Sub

'***************** 標準モジュール 内 ***********
Private Sub Set_Cell()
  With ActiveCell
    Debug.Print "Set_Cell:" & .AddressLocal(False, False)
    Select Case .AddressLocal(False, False)
      '1つ下に移動するセル
      Case "D4", "D5", "D7", "D8", "D9"
        .Offset(1, 0).Select
      '2つ下に移動するセル
      Case "D10", "D12"
        .Offset(2, 0).Select
      '1つ右に移動するセル
      Case "D14", "E14", "F14", "G14", "D16", "E16", "F16", "G16"
        .Offset(0, 1).Select
      'その他 18行目までの不規則な移動のセル
      Case "D6": Range("A7").Select
      Case "A7": Range("D7").Select
      Case "H14": Range("D16").Select
      Case "H16": Range("B19").Select
      '最後のセル
      Case "N215": Range("D4").Select
      Case Else '19行目から 217行目までのセル
        If (.Row >= 19 And .Row <= 217) Then
          Select Case (.Row Mod 4)
            Case 3 '4で割ったら3余る行(19、23、27・・・)
              Select Case .Column
                Case 2 'B列
                  .Offset(1, 0).Select '1つ下へ
                Case 4 To 13 'E列~M列
                  .Offset(0, 1).Select '1つ右へ
                Case 14
                  Cells(.Row + 4, "B").Select '4行下のB列へ
              End Select
            Case 0 '4で割り切れる行(20、24、28・・・)
              If (.Column = 2) Then .Offset(1, 0).Select 'B列ならば、1つ下のセルへ
            Case 1 '4で割ったら1余る行(21、25、26・・・)
              Select Case .Column
                Case 2 'B列
                  .Offset(0, 1).Select '1つ右へ
                Case 3 'C列
                  Cells(.Row - 2, "D").Select '2行上のD列へ
              End Select
          End Select
        End If
    End Select
  End With
End Sub

まだ、おかしければ補足してください。

修正しました。
法則性があるようなので、全てのセルを書かず、計算で求める様にしました。
(初歩的な命令を複雑に組み合わせているだけですので
 少し勉強すれば、読めるようになると思います。)
(勉強の為、少し統一性の無い書き方をしてあります。
 いろいろな書き方が出来る例です)
デバッグしやすいように、全てのマクロを修正(追加)しています。
(Set_cellのマクロ以外は、Debug.Printの1文を追加しただけです)
Debug.Printはデバッグの為の命令です。
プログラムが、目的通り動いた...続きを読む


人気Q&Aランキング

おすすめ情報