- ベストアンサー
エクセルのマクロで複数セル指定は?
以前(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個のセル)をいっぺんに書き込むようにしたいのですが可能でしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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 試すならテスト環境で。
その他の回答 (2)
- misatoanna
- ベストアンサー率58% (528/896)
端的に言えば、次のような感じでよいのではないですか。 Sub Test() DT = Cells(2, 3).Value Range("A1:A30") = DT End Sub
お礼
ご回答ありがとうございます。 まだまだ素人なのでちょっとしたことがすごいヒントになります。参考になりました。またよろしくお願いします。
> ひとつのセルではなく複数のセル(例えばA1からA30の30個のセル)をいっぺんに書き込むようにしたい 「いっぺんに書き込むようにしたい」とは 「どこに」、「どのように」書き込むようにしたいのでしょうか? > 可能でしょうか? たぶん可能でしょう。
お礼
質問が説明不足ですいませんでした。 いくつかご回答をいただきなんとかできそうです。 ありがとうございました。
お礼
ご回答ありがとうございます。 Rangeの使い方、一分おきの判定方法など大変参考になりました。またよろしくお願いします。