プロが教える店舗&オフィスのセキュリティ対策術

Sheet1に
列に日にち(A~AEまで31日分)
行には計算したデータがあります。

例)
?月1日ならば
A1をグラフ範囲としてグラフを書き、
?月2日ならば
A1からB1をグラフ範囲としてグラフをかく

といった感じで毎日
その日までをグラフ範囲として描きたいのですが

毎日毎日自分でグラフ範囲を指定するのは面倒なので
自動的にグラフ範囲を指定したいのです。

わかりにくい文章ですみません
どなたか教えて下さいお願いします。

A 回答 (4件)

>セルに計算式が入っているからか、


>プロットしないでも0が表示してしまいます。
なるほど、なかなか難しいですね(^^;

1行目にデータ、2行目が空いているとします
グラフの範囲をA2からAE2に
#1と同様オープン時のイベントを記述

Private Sub Workbook_Open()

Dim データ行 As Integer
Dim グラフ行 As Integer
Dim 日 As Integer

データ行 = 1
グラフ行 = 2 '適当に空いてる行に変えてください

日 = Day(Now())

Range(Cells(グラフ行, 1), Cells(グラフ行, 31)).ClearContents 'グラフ用のデータを削除
Range(Cells(データ行, 1), Cells(データ行, 日)).Copy '必要なデータのみコピー
Cells(グラフ行, 1).Select 'グラフ用データの貼り付け先を選択
Selection.PasteSpecial Paste:=xlValues '値の貼り付け

End Sub

こんな感じでどうでしょう?
空いてる行へ必要なデータのみコピーし、それを元にグラフを書くようにしています。
印刷する時などでグラフ用のデータ見えて見栄えが悪い場合は、グラフ用のデータが入っているセルのフォントの色を白にすればごまかせます(裏技)
    • good
    • 0
この回答へのお礼

なんどもありがとうございました。
やっと実現できるようになりました。

裏技もなるほど納得です。
ありがとうございました。

お礼日時:2004/04/25 14:33

>折れ線グラフのラインだけをその日まで描かせたいみたい


これでしたらマクロなどは不要ですね。
グラフの範囲は31日分にしておく。
グラフを選択して[ツール]→[オプション]→[グラフ]→[空白セルのプロット]で[プロットしない]に。
これで不要なデータを消せばラインも消えると思いますが。
    • good
    • 0
この回答へのお礼

ありがとうございます。
セルに計算式が入っているからか、
プロットしないでも0が表示してしまいます。

ほんとすみません。

お礼日時:2004/04/24 11:32

グラフの名前を正しくしないと動きません。


これを調べるのは簡単ではないようですね、失礼しました。
ちょっとややこしい操作になりますので、バックアップを取ってから行ってください。
1.[ツール]→[マクロ]→[新しいマクロの記録]
2.マクロ名「Macro1」のままで[OK]
3.グラフをドラッグして少し移動させる
4.[ツール]→[マクロ]→[記録終了]
5.[ツール]→[マクロ]→[マクロ]
6.「Macro1」を[編集]
すると
 ActiveSheet.ChartObjects("グラフ ?").Activate
のような部分があると思います、↑これがグラフ名です。
7.保存せずに終了(不要なマクロを記録したので)
8.再度開いてグラフ名を書き換えてください

追記
列を変更する場合は
Cells(1, 1)とCells(1, d))
   ↑     ↑
この1を適当な列番号に変えてください。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
うまくいきました。
しかし、よくよく依頼人にきくと、私はとんでもない
勘違いをしていました。

グラフ範囲は30日又は31日でいいらしく
折れ線グラフのラインだけをその日まで描かせたいみたいです。すみません。
残り少しの追加でできるものなんでしょうか?

なんどもなんどもすみません。

お礼日時:2004/04/23 18:41

visual basic editorを開き「ThisWorkbook」を開き、


オープン時のイベントを記述。

Private Sub Workbook_Open()
Dim d As Integer
d = Day(Now())
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.SetSourceData Source:=Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(1, d))
End Sub

こんな感じでいかがでしょう?
(シート名、グラフ名などは適当に変えてください)
    • good
    • 0
この回答へのお礼

返事が遅くなってすみません!
ActiveSheet.ChartObjects("グラフ 1").Activate
のところでChartクラスのChartObjectプロパティを取得
できませんというエラーがでてしまいます。

またアドバイスいただければありがたいです。
どうぞよろしくお願いします

お礼日時:2004/04/22 23:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!