• ベストアンサー

エクセルでのセルの移動規制について

エクセルで、A1,A2,A3,B1,B2,B3と、永遠に3行だけセルの移動をさせるにはどの様にしたらいいのでしょうか?お知恵をお貸し下さい。お願いいたします。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.8

無限循環ですかー... Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Row = 4 Then     Cells(1, Target.Column + 1).Activate   End If End Sub

furu1975
質問者

お礼

お返事が遅れ、申し訳ございませんでした。頂きましたアドバイスで、上手く動かすことが出来ました。本当にありがとうございます。VBAとか使う機会が全くございませんので、いい勉強にもなりました。本当にありがとうございます。

その他の回答 (8)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.9

#6 の変更 良く確かめて、お好きなものをすればよいけれど、以下は、マクロではあっても、単に、設定するだけのマクロです。 Private Sub Workbook_Open()  'シート1 の場合  Worksheets("Sheet1").ScrollArea = Range("1:3").Address End Sub これは、IV3 までいくと、A1 に戻ります。

furu1975
質問者

お礼

お返事が遅れ、申し訳ございません。おかげさまで上手く動かすことが出来ました。本当にありがとうございます。マクロなど使う機会が少ないため、今回は、いい勉強になりました。本当にありがとうございました。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.7

(1)名前ボックスにA4:A65536と入力し、Enterを押します。 (2)メニューバーの書式>行>表示しないを選択 (3)行番号1から3を選択し、入力を始めます 再表示する場合はA列を選択し、メニューバーの書式>行>再表示です。

furu1975
質問者

お礼

お返事が遅れ申し訳ございませんでした。まだまだスキルが低く、色々アドバイスいただき、ありがとうございました。おかげさまで上手く動かすことが出来ました。本当にありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 設定の仕方は、Alt + F11 で、VB Editor 画面を開けてもらって、左上のプロジェクトのウィンドウの中の[ThisWorkbook]をダブルクリックしていただいたら、以下のコードを貼り付けていただき、ブックを一旦閉じて、開ければ設定できます。 手動でも設定できるのですが、その場合は、ブックを閉じると設定が消えてしまうので、このようにします。 Private Sub Workbook_Open()  'シート1 の場合  Worksheets("Sheet1").ScrollArea = Range("A1:B3").Address End Sub これは、#1さんの考え方と同じなのですが、完全に、他のセルにはマウスさえ触らせないようにする方法です。それは、#3さんのコードとの違いでもあります。 他のEnter イベントという方法もありますが、VBAをご存知ないと、ちょっと負担が大きすぎるような気がしましたのでやめました。

furu1975
質問者

お礼

お返事が遅れ、申し訳ございませんでした。ご解答、ありがとうございます。私がやりたかったのが、他のセルも触りつつ、循環はA1,A2、A3・・・と巡廻するものでした。皆様のおかげで上手く動かすことが出来ました。本当にありがとうございました。

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

区域外のセルを選択しようとしたとき、どこを選択するのでしょうか。 入力後の選択は、A1->A2,A2->A3、A3->B1・・ として。 (1)セル選択の制限 (2)入力後のセル選択の移動 の2つの問題が含まれていて、VBAでSelectionChangeイベントだけでなく、Changeイベントの製薬も必要になるのかな と思います。 選択の点では Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False c = Target.Column r = Target.Row If c > 3 And r > 3 Then r = 1 c = 1 GoTo ext1 End If '--- If c > 3 Then c = 1 r = r + 1 If r > 3 Then r = 1 End If GoTo ext1 End If '--- If r > 3 Then r = 1 c = c + 1 If c > 3 Then c = 1 End If End If '---- ext1: Cells(r, c).Select Application.EnableEvents = True End Sub ただしこれが良いのか自信ありません。 #2のご回答の機能+区域がいの処理です。

furu1975
質問者

お礼

お礼が遅れて申し訳ございません。早々のご解答ありがとうございました。 なかなかVBAって難しいものですね。うまく解決することができました。ありがとうございました。

noname#22222
noname#22222
回答No.4

s_husky です。 Sheet1 の A1->A2->A3->B1->B2->B3->A1->A2・・・という循環移動を実現するには、 1、Sheet1 のタグを右クリック->コードの表示(V)を選択。 2、(General)->Worksheet に変更。 3、Worksheet_SelectionChange(ByVal Target As Range)にコードをコピーします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) (ここに、 IF-End If までのコードをコピー) End Sub 以上で、循環移動が実現できます。

furu1975
質問者

お礼

ご解答ありがとうございます。上手く動きました!ただ、私がやりたいことなんですが、A1->A2->A3->B1->B2->B3->c1->c2->c3->d1->d2->d3->という循環を実行したいのです。なにかいいお知恵はないでしょうか?

noname#22222
noname#22222
回答No.3

Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Row = 4 Then     If Target.Column = 1 Then       Cells(1, 2).Activate     ElseIf Target.Column = 2 Then       Cells(1, 1).Activate     End If   End If End Sub ※Excel の操作経験がないので、こんな回答しか思い付きません!

furu1975
質問者

お礼

早々の回答ありがとうございます。VBAですね。私自身、VBAを使ったことがないので。。。どのように使ったらいいのでしょうか?よろしければお教え下さい

noname#16474
noname#16474
回答No.2

1、2、3の行を選択した状態で入力します エンターキーを押すたびにご希望の順で入力できます

furu1975
質問者

お礼

早々の回答ありがとうございます。お教えいただいたやり方だと、私のやり方が悪いのかも知れないのですが、入力ができないんですがなにか方法があるのでしょうか?

回答No.1

1:3行を選択した状態で、[書式]-[セル]-[保護]の[ロック]をOFF。 [ツール]-[保護]-[シートの保護]の 「ロックされたセル範囲の選択」をOFF。 (Excel2003で確認)

furu1975
質問者

お礼

早々の回答ありがとうございます。 私のやり方が悪いのかも知れませんが、お教えいただいたやり方だと、ずっと、A1が起点になってしまうようなんですけど、他に設定することが必要なんでしょうか?

関連するQ&A