• ベストアンサー

エクセルのマクロ

エクセルのマクロでわからないことがあり質問なんですが A1セルの数値がリアルタイムに更新されていて このA1セルの数値が更新されるたびに B1とB2にA1セルの最新の値を交互にコピーしていくマクロを 作りたいんですがうまくいきません。 例としては A1に1と表示→B1に1と表示 A1に7と表示→B2に7と表示 A1に18と表示→B1に18と表示 これをA1セルが更新され続ける限り繰り返しすマクロです。 どなたか教えていただけるとありがたいです。

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

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

こんばんは。 それは、DDE やOLEでデータをインポートしているのではありませんか? シートタブを右クリックして、「コードの表示」で以下を貼り付けます。 次に、ワークシートのどこでもよいので、空いたセルに、=NOW()と入れます。 '------------------------------------------- Private Sub Worksheet_Calculate() Static flg As Boolean   Application.EnableEvents = False   Range("B1").Offset(Abs(CInt(flg)), 0).Value = Range("A1").Value   Application.EnableEvents = True   flg = Not flg End Sub

jcomkita
質問者

お礼

助かりました。ありがとうございました。 自分でできるように勉強します。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

セルB1とB2のどっちが最新の値かを判断する条件が必要です 'セルA2を使用して Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Range("A2").Value = 2 Then Range("B2").Value = Range("A1").Value Range("A2").Value = 1 Else Range("B1").Value = Range("A1").Value Range("A2").Value = 2 End If End Sub 'セルを使用するのがイヤなら Dim z As Integer Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If z = 2 Then Range("B2").Value = Range("A1").Value z = 1 Else Range("B1").Value = Range("A1").Value z = 2 End If End Sub こんな感じでよい?

jcomkita
質問者

お礼

ありがとうございました。参考書読んでも Ifの詳しい説明が書いてなくて困っていたのでとても参考になりました。