[[20180801194421]] 『ショートカットでセルの移動』(;;) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ショートカットでセルの移動』(;;)

あるキーを押した時に、
前もって指定したセルに移動して、またキーを押すと
再度以前のセルに戻るにはどうしたらいいですか?

A〜I列までにデータを入力していき、Aが日付データです
1行1データです

データが増えるたびに、N1に入力してある日付をA列のセルに転記するようにしています
マウスに持ち替えて、
N1と入力している行を行き来させるのが手間なので
キーボードだけで行き来させ、効率的に入力したいです

伝わりましたでしょうか?

< 使用 Excel:Excel2016、使用 OS:Windows10 >


そんなショートカットはないと思います。

>データが増えるたびに

どんな作業をしているか理解できていませんが
マウスを行き来させている作業1セット分をマクロにできませんか。

(マナ) 2018/08/01(水) 21:43


 画面分割するとか、新規ウインドウで画面を2つにしてCtrl+Tabで
 切り替えるとかはダメですか?
(コナミ) 2018/08/01(水) 23:48

マクロで
 (1)もし選択されているのがN1じゃなかったら
   (1-1)セル番地を覚えておく
   (1-2)N1に移動する
 (2)N1が選択されていたら
   (2-1)覚えていたセルを選択
   (2-2)覚えているセルが無かったらそのまま終了

というのを作って、そいつにショートカットキーを割り当てれば希望の形になるような気がしますが、マクロを作る気はありますか?

ただ、マクロをつかうならもっと簡単に

 A列でダブルクリックしたらN1セルの日付をコピーする

みたいなものを作ったほうが手っ取り早そうな気がします

(もこな2) 2018/08/02(木) 03:30


>N1に入力してある日付をA列のセルに転記
ではA列のセルに=N1と数式を埋め込むだけで良いのでは・・・?
わざわざ移動する必要性が分かりません。

もしN1の日付がデータ入力のタイミングによって変化するから値が欲しいというのなら
A列でデータ入力するときに、
Ctrl+C → アプリケーションキー → V
とキーボードを叩くだけで値として貼り付けられます。
(名無し) 2018/08/02(木) 08:39


 N1と任意のセルを行き来する?
 ジャンプ機能だとどうだろう?

 手順:
 N1に名前をつけておく。
 A列の任意のセルを選択
 Ctrl+G でジャンプ画面開く
 Tabキーをおして移動先画面内に入り、N1につけた名前まで矢印キーで移動
 Enter ←これでN1に移動。
 コピー
 そのまま Ctrl+G でジャンプ画面開く
 Tabキーをおして移動先画面内に入り、先ほどの移動元のAセルが移動先画面内にあるので、それを矢印キーで選択。
 Enter ←これで元のAセルに移動。

 A列に移動するのはどの行にいてもHomeキーで戻るから、活用おすすめ。
 あともしもN1が本日の日付なら Ctrl+; で入るのでそれもおすすめ。

(1111) 2018/08/02(木) 08:59


もこな2さん案とほとんど同じですが、貼りたい値が常にN1セルにあるならば、マクロを利用するのはどうでしょう?

以下のコードをシートモジュールに貼ると、セル指定(範囲や飛び飛びでもOK)した後、右クリックすると、選択したA列のセルにN1の値を代入します。 キー操作ではなくマクロ操作になりますが、セルを行き来しなくて済むので、作業が楽になるのではないかと思いますよ。

 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim R As Range
    For Each R In Target
        If R.Column = 1 Then
            R.Value = Range("N1").Value
        End If
    Next R
    Cancel = True
 End Sub
(???) 2018/08/02(木) 09:24

わざわざマクロを使うのであれば、私なら自動入力にしますね。
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.EntireRow.Cells(1, 1).Value = "" And Target.Column > 1 And Target.Row > 1 Then
        Target.EntireRow.Cells(1, 1).Value = Range("N1")
    End If
    Application.EnableEvents = True
End Sub
これならマウスを使わなくとも次々と入力していけます。
(名無し) 2018/08/02(木) 09:47

名無しさんのChangeイベントを使う方法の延長線でしょうけど
・入力するたびに書き込みが生じるとうざったいような気がする
・B〜I列がすべてクリアされたらA列も自動的にクリアされたほうがいいのではないか?
という観点から以下を作成してみました。
複数行をいっぺんに入れるということをしなければ大丈夫だとおもいます。参考になれば。

   Private Sub Worksheet_Change(ByVal Target As Range)

      '変更されたセルがB〜I列でなければ、何もせず終了
      If Intersect(Target, Range("B:I")) Is Nothing Then Exit Sub

      '変更されたセル(範囲)が1行目なら終了
      If Target.Row = 1 Then Exit Sub

      With Cells(Target.Row, "A")
         If WorksheetFunction.CountA(Intersect(Target, Range("B:I"))) > 0 Then
            If .Value = "" Then .Value = Range("N1").Value
         Else
            .Value = ""
         End If
      End With

   End Sub
(もこな2) 2018/08/02(木) 23:04

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.