• ベストアンサー

エクセルのマクロで複数セル指定は?

以前(7月22日 質問No.936181)の質問でご回答を頂いたマクロなんですが、 Private Sub Worksheet_Change(ByVal Target As Range) Dim MyData As String Dim i As Integer Dim ImaNanji As String Dim SakkiNanji As String Dim ImaNanpun As String Dim SakkiNanpun As String SakkiNanpun = Cells(2, 3).Value ImaNanji = Cells(1, 3).Value ImaNanpun = Mid(ImaNanji, Len(ImaNanji) - 4, 2) If ImaNanpun <> SakkiNanpun Then Application.EnableEvents = False For i = 10 To 2 Step -1 MyData = Cells(i - 1, 2).Value Cells(i, 2).Value = MyData Next i MyData = Cells(1, 1).Value Cells(1, 2).Value = MyData Cells(2, 3).Value = ImaNanpun Application.EnableEvents = True End If End Sub A1のデータをB1からB10に一分おきにつぎつぎに書き込むというものなんですが、ひとつのセルではなく複数のセル(例えばA1からA30の30個のセル)をいっぺんに書き込むようにしたいのですが可能でしょうか? よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

1)B1:AE1の値をB2:AE2に写す。 2)A1:A31の値をB1:AE1に写す。 だとしたら、こんな感じでしょうか? 判定はAF1を使ってます。 Private Sub Worksheet_Change(ByVal Target As Range) With ActiveSheet  If .Range("AF1").Value = "" Then    .Range("AF1").Value = Now    GoTo myStart:  End If  If Minute(Now) <> Minute(.Range("AF1").Value) Then   myStart:   Application.EnableEvents = False   For j = 2 To 31    For i = 10 To 2 Step -1     .Cells(i, j).Value = .Cells(i - 1, j).Value    Next i    .Cells(1, j).Value = .Cells(j - 1, 1).Value    .Range("AF1").Value = Now   Next j   Application.EnableEvents = True  End If End With End Sub 試すならテスト環境で。

punba99
質問者

お礼

ご回答ありがとうございます。 Rangeの使い方、一分おきの判定方法など大変参考になりました。またよろしくお願いします。

その他の回答 (2)

回答No.3

端的に言えば、次のような感じでよいのではないですか。 Sub Test() DT = Cells(2, 3).Value Range("A1:A30") = DT End Sub

punba99
質問者

お礼

ご回答ありがとうございます。 まだまだ素人なのでちょっとしたことがすごいヒントになります。参考になりました。またよろしくお願いします。

noname#7749
noname#7749
回答No.1

> ひとつのセルではなく複数のセル(例えばA1からA30の30個のセル)をいっぺんに書き込むようにしたい 「いっぺんに書き込むようにしたい」とは 「どこに」、「どのように」書き込むようにしたいのでしょうか? > 可能でしょうか? たぶん可能でしょう。

punba99
質問者

お礼

質問が説明不足ですいませんでした。 いくつかご回答をいただきなんとかできそうです。 ありがとうございました。

関連するQ&A