|
▼ドカ さん:
>▼kanabun さん 何度もありがとうございます。
>
>う〜〜ん なぜだか分かりませんが、ぴくりとも動きません。
>グラフの書き方も色々変えてみましたが、まったく動きませんでした。
2点ほど、確認してください
1.修正後のコードは対象(グラフのある)シートのシートモジュールに
書いていますか?
2.修正後のコードは D,E列のセル変更に反応します。
対象シート上で DまたはE列変更して、Worksheet_Changeイベント
が起きてChangeイベントプロシージャが呼び出されているか、
また、プロシージャ内でどのようにコードが実行されているか?
以下の方法で調べてください:
> Private Sub Worksheet_Change(ByVal Target As Range)
> Dim myCol As Long
> myCol = Target.Column
まず、この 「 myCol = Target.Column 」の行を(マウスで)選択し、
キーボードの[F9]を押してこの行に「ブレークポイント」をセットして
ください。
つぎに、シートに戻り、D,Eいずれかの列にデータを入力してください
入力を画定するために[Enter]を押すと、Changeイベントが発生し、
先ほどのブレークポイントのセットしてある行で、プログラムの
実行が一時中断(Break)します。
そしたら [F8]を押して、プログラムを1行だけ実行してください。
> myCol = Target.Column
の行が実行されます。myCol のところにマウスをあてがうと myCol変数の
現在の内容が表示されます。myCol はいくつになってますか?
4ですか? 5ですか?
このようにして、[F8]を押して一行づつ実行しながら、
> For Each Ser In .Chart.SeriesCollection
> zz = Ser.Formula '現在の系列式
> ss = Split(zz, ",")(2)
> Set r = Me.Range(ss) '元データ範囲
> If r.Column = myCol Then
zz がどのような式で、
zzをカンマで区切った3番目の部分が 現在の「y軸元データ範囲」で
その部分(Address)だけ 変数ssに代入して、元の範囲を取得している
ことなど、
順にトレースしていってください。
そうするうちに、あなたの意図しているとおりにプログラムが
動いていてくれない部分がどこか見えてくると思います。
不具合部分が分かったらそれを修正してください。
修正の仕方が分からなければ、不具合部分の報告だけお願いします。
こういう作業をデバッグ作業といいます。
|
|