重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (9件)

無限循環ですかー...



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Row = 4 Then
    Cells(1, Target.Column + 1).Activate
  End If
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/26 20:54

#6 の変更


良く確かめて、お好きなものをすればよいけれど、以下は、マクロではあっても、単に、設定するだけのマクロです。

Private Sub Workbook_Open()
 'シート1 の場合
 Worksheets("Sheet1").ScrollArea = Range("1:3").Address
End Sub

これは、IV3 までいくと、A1 に戻ります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/26 20:59

(1)名前ボックスにA4:A65536と入力し、Enterを押します。


(2)メニューバーの書式>行>表示しないを選択
(3)行番号1から3を選択し、入力を始めます

再表示する場合はA列を選択し、メニューバーの書式>行>再表示です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/26 20:53

こんにちは。



設定の仕方は、Alt + F11 で、VB Editor 画面を開けてもらって、左上のプロジェクトのウィンドウの中の[ThisWorkbook]をダブルクリックしていただいたら、以下のコードを貼り付けていただき、ブックを一旦閉じて、開ければ設定できます。

手動でも設定できるのですが、その場合は、ブックを閉じると設定が消えてしまうので、このようにします。

Private Sub Workbook_Open()
 'シート1 の場合
 Worksheets("Sheet1").ScrollArea = Range("A1:B3").Address
End Sub

これは、#1さんの考え方と同じなのですが、完全に、他のセルにはマウスさえ触らせないようにする方法です。それは、#3さんのコードとの違いでもあります。

他のEnter イベントという方法もありますが、VBAをご存知ないと、ちょっと負担が大きすぎるような気がしましたのでやめました。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/26 20:50

区域外のセルを選択しようとしたとき、どこを選択するのでしょうか。


入力後の選択は、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のご回答の機能+区域がいの処理です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/26 20:48

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

以上で、循環移動が実現できます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/25 21:29

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 の操作経験がないので、こんな回答しか思い付きません!
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/25 10:03

1、2、3の行を選択した状態で入力します


エンターキーを押すたびにご希望の順で入力できます
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/25 08:50

1:3行を選択した状態で、[書式]-[セル]-[保護]の[ロック]をOFF。


[ツール]-[保護]-[シートの保護]の
「ロックされたセル範囲の選択」をOFF。
(Excel2003で確認)
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/02/25 08:48

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