- 締切済み
エクセル マクロについて
エクセルでネットの情報(為替の値動き)を自動更新で取得しています。自動更新前の情報を同一シート(同一シートが無理な場合は別シートでもいいのですが…)にコピペし一覧にするマクロはありますか? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then 'A1のセルの値が変化したら・・・ n = Cells(Rows.Count, "B").End(xlUp).Row + 1 ’B列の最終行を探しその次の行に・・・ Range("B" & n).Value = Range("A1").Value ’A1の値を貼り付けていく End If End Sub これだと手動セルを上書きした時しか動いてくれませんでした。検索もしたのですが見当たらなくて困っています。お力を貸してください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 できましたら、「ネットの情報(為替の値動き)を自動更新」をどのようにしているか教えてください。楽天RSS などからですか? マイクロソフトのサポートにも出ていましたし、他の掲示板でも、そこを参照するように書いてあったのですが、OnData や、Worksheet_Change では、どうもダメなようですね。(97では動いたというのですが。) 以下は、DDEやOLEから入ってくるものでも稼動します。 Worksheet_Calculate イベントで、 例えば、適当なセルに、=NOW() または、#2さんが書かれているように、代入するセルが、A1 なら、=A1 とします。範囲なら、=COUNT(A:A)でも可能です。 そして、以下のようなコードはどうでしょうか。 DDEの発生では、以下のコードで稼動しています。 Private Sub Worksheet_Calculate() If Range("D1").Value =1 Then Exit Sub 'D1 をスイッチにします。 Range("B65536").End(xlUp).Offset(1).Value = Range("A1").Value End Sub ただし、常に、イベントが働いていますから、上記のようにスイッチを設けて、動かないようにしておくと良いです。
- n-jun
- ベストアンサー率33% (959/2873)
例えばSheet1のA1の値の変化だとしたら、Sheet2のA1に =Sheet1!A1 とする。 Sheet1のA1の値に変化が起きると、Sheet2が再計算されるので、Sheet2のWorksheet_Calculate() が使える。 あとはSheet1に対して必要な処理をWorksheet_Calculate() に書き込む。 (Sheet2はあくまでイベント発生のために用意したシートである) 未検証なので的はずれかも知れませんけど。
- xls88
- ベストアンサー率56% (669/1189)
>If Target.Column = 1 Then 'A1のセルの値が変化したら・・・ セルA1に限らず、A列のセルの値が変化したら・・・ ということですね? 試しに、マクロでA列セルにデータを打ち込んでみました。 結果、Worksheet_Changeイベントは動きました。 Excel2007です。 自動更新でも、いけそうに思うのですが、どうでしょうか?
お礼
>試しに、マクロでA列セルにデータを打ち込んでみました。 結果、Worksheet_Changeイベントは動きました。 Excel2007です。 説明不足でした。それは試し済みです。 その後、自動更新でやってみたのですがダメだったのでこちらに投稿しました。