Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13531 / 13644 ツリー ←次へ | 前へ→

【4963】グラフの作成 くみ 03/4/15(火) 17:12 質問
【4972】Re:グラフの作成 Jaka 03/4/16(水) 9:11 回答
【4977】Re:グラフの作成 くみ 03/4/16(水) 11:14 質問
【4978】Re:グラフの作成 くみ 03/4/16(水) 11:45 質問
【4982】Re:グラフの作成 Jaka 03/4/16(水) 12:33 回答
【4988】Re:グラフの作成 くみ 03/4/16(水) 16:02 お礼

【4963】グラフの作成
質問  くみ  - 03/4/15(火) 17:12 -

引用なし
パスワード
   現在シート「HEALTH」の値を同じシートに線グラフとして表示させるVBAを
作成しました。
こんな感じに
Sub グラフ作成()
  Set WS = Worksheets("HEALTH")
  
  Set GRP1 = WS.ChartObjects.Add(100, 100, 500, 300)
  GRP1.Chart.SetSourceData _
    Source:=WS.Range("A1:B30"), PlotBy:=xlColumns
  GRP1.Chart.ChartType = xlLine
ActiveSheet.ChartObjects("グラフ 6").Activate
  ActiveChart.ChartArea.Select
  ActiveChart.Axes(xlValue).Select
  With ActiveChart.Axes(xlValue)
    .MinimumScale = 50
    .MaximumScale = 65
    .MinorUnitIsAuto = True
    .MajorUnit = 1
    .Crosses = xlAutomatic
    .ReversePlotOrder = False
    .ScaleType = xlLinear
    .DisplayUnit = xlNone
  End With
  
End Sub

これを
シート「HEALTH」ではなくシート「グラフ」に表示させたいのです
また
グラフの操作(最大値と最小値の変更、メモリの変更)を後から行っているのですが、
この操作だと、シートを表示したときにはうまく表示できますが、セルにポイントを
持っていくと最大値と最小値が変わってしまいます。
セルを触っても変わらなくする方法はありますか?

よろしくお願いいたします。

【4972】Re:グラフの作成
回答  Jaka  - 03/4/16(水) 9:11 -

引用なし
パスワード
   おはようございます。

>この操作だと、シートを表示したときにはうまく表示できますが、セルにポイントを持っていくと最大値と最小値が変わってしまいます。
>セルを触っても変わらなくする方法はありますか?

この意味が良く解らなかったけど...。
データ範囲を変えられたくないと取りました。
こんな感じでしょうか?

Sub GRF()
  Dim WS As Worksheet, WS2 As Worksheet, GRP1 As Object
  Set WS = Worksheets("HEALTH")
  Set WS2 = Worksheets("グラフ")
  Set GRP1 = WS2.ChartObjects.Add(100, 100, 500, 300)
  GRP1.Chart.SetSourceData _
    Source:=WS.Range("A1:B30"), PlotBy:=xlColumns
  GRP1.Chart.ChartType = xlLine
  
  GRP1.Name = "作成グラフ"
     
  With WS2.ChartObjects("作成グラフ")
    With .Chart.Axes(xlValue)
      .MinimumScale = 50
      .MaximumScale = 65
      .MinorUnitIsAuto = True
      .MajorUnit = 1
      .Crosses = xlAutomatic
      .ReversePlotOrder = False
      .ScaleType = xlLinear
      .DisplayUnit = xlNone 'ここ、97だとエラーになった。2000だと動いたけど。 
    End With
    .Chart.ProtectData = True
  End With
  Set WS = Nothing
  Set WS2 = Nothing
  Set GRP1 = Nothing
End Sub

【4977】Re:グラフの作成
質問  くみ  - 03/4/16(水) 11:14 -

引用なし
パスワード
   Jaka さん、ありがとうございます。

jakaさんのコードでなるほど!と思い実行してみたら、
・グラフシートに書き出すことはできたが、
 HEALTHシートにもグラフが出てしまった→
 HEALTHシートにはデータだけでグラフは表記したくない
・グラフの数値でマックス値が70、ミニマム値が0で表記されてしまう→
 グラフの数値のマックス値は65、ミニマム値は50で作りたい。

グラフの数値は私がやったときにも、こうなりました。
マクロを実行するとマックス65、ミニマム50の表記になるんですが、
セルを触るとマックス70、ミニマム0に変わってしまうんです・・・。
データの数値は65〜50の間です。

こうなってしまいました・・・・。


>おはようございます。
>
>>この操作だと、シートを表示したときにはうまく表示できますが、セルにポイントを持っていくと最大値と最小値が変わってしまいます。
>>セルを触っても変わらなくする方法はありますか?
>
>この意味が良く解らなかったけど...。
>データ範囲を変えられたくないと取りました。
>こんな感じでしょうか?
>
>Sub GRF()
>  Dim WS As Worksheet, WS2 As Worksheet, GRP1 As Object
>  Set WS = Worksheets("HEALTH")
>  Set WS2 = Worksheets("グラフ")
>  Set GRP1 = WS2.ChartObjects.Add(100, 100, 500, 300)
>  GRP1.Chart.SetSourceData _
>    Source:=WS.Range("A1:B30"), PlotBy:=xlColumns
>  GRP1.Chart.ChartType = xlLine
>  
>  GRP1.Name = "作成グラフ"
>     
>  With WS2.ChartObjects("作成グラフ")
>    With .Chart.Axes(xlValue)
>      .MinimumScale = 50
>      .MaximumScale = 65
>      .MinorUnitIsAuto = True
>      .MajorUnit = 1
>      .Crosses = xlAutomatic
>      .ReversePlotOrder = False
>      .ScaleType = xlLinear
>      .DisplayUnit = xlNone 'ここ、97だとエラーになった。2000だと動いたけど。 
>    End With
>    .Chart.ProtectData = True
>  End With
>  Set WS = Nothing
>  Set WS2 = Nothing
>  Set GRP1 = Nothing
>End Sub

【4978】Re:グラフの作成
質問  くみ  - 03/4/16(水) 11:45 -

引用なし
パスワード
   ひとつ解決しました!
>・グラフの数値でマックス値が70、ミニマム値が0で表記されてしまう→
> グラフの数値のマックス値は65、ミニマム値は50で作りたい
これは自分でグラフの値をプロパティで変えて保存したら表記されるようになりました。

HEALTHシートからグラフは消せません・・・。


>
>jakaさんのコードでなるほど!と思い実行してみたら、
>・グラフシートに書き出すことはできたが、
> HEALTHシートにもグラフが出てしまった→
> HEALTHシートにはデータだけでグラフは表記したくない
>・グラフの数値でマックス値が70、ミニマム値が0で表記されてしまう→
> グラフの数値のマックス値は65、ミニマム値は50で作りたい。
>
>グラフの数値は私がやったときにも、こうなりました。
>マクロを実行するとマックス65、ミニマム50の表記になるんですが、
>セルを触るとマックス70、ミニマム0に変わってしまうんです・・・。
>データの数値は65〜50の間です。
>
>こうなってしまいました・・・・。
>
>
>>おはようございます。
>>
>>>この操作だと、シートを表示したときにはうまく表示できますが、セルにポイントを持っていくと最大値と最小値が変わってしまいます。
>>>セルを触っても変わらなくする方法はありますか?
>>
>>この意味が良く解らなかったけど...。
>>データ範囲を変えられたくないと取りました。
>>こんな感じでしょうか?
>>
>>Sub GRF()
>>  Dim WS As Worksheet, WS2 As Worksheet, GRP1 As Object
>>  Set WS = Worksheets("HEALTH")
>>  Set WS2 = Worksheets("グラフ")
>>  Set GRP1 = WS2.ChartObjects.Add(100, 100, 500, 300)
>>  GRP1.Chart.SetSourceData _
>>    Source:=WS.Range("A1:B30"), PlotBy:=xlColumns
>>  GRP1.Chart.ChartType = xlLine
>>  
>>  GRP1.Name = "作成グラフ"
>>     
>>  With WS2.ChartObjects("作成グラフ")
>>    With .Chart.Axes(xlValue)
>>      .MinimumScale = 50
>>      .MaximumScale = 65
>>      .MinorUnitIsAuto = True
>>      .MajorUnit = 1
>>      .Crosses = xlAutomatic
>>      .ReversePlotOrder = False
>>      .ScaleType = xlLinear
>>      .DisplayUnit = xlNone 'ここ、97だとエラーになった。2000だと動いたけど。 
>>    End With
>>    .Chart.ProtectData = True
>>  End With
>>  Set WS = Nothing
>>  Set WS2 = Nothing
>>  Set GRP1 = Nothing
>>End Sub

【4982】Re:グラフの作成
回答  Jaka  - 03/4/16(水) 12:33 -

引用なし
パスワード
   >HEALTHシートにもグラフが出てしまった

HEALTHシートにグラフを作るようには、作ってないんですけど...。
2000と97で、試したみてもHEALTHシートには、グラフなんか表示されませんでした。
いまいち状況が良く解らないんですけど、もしかしてグラフを1度だけ作って、その後は作ったグラフを流用した言って事だったんでしょうか?
消さないで何度もグラフを作成すると、グラフが同じ所に作られてしまいます。
そう言う気の利いたように作ってませんので....。
ここみたいに1つのグラフを使いつづけたかったのでしょうか?
[#2617]

>HEALTHシートからグラフは消せません・・・。

あの..、消す処理は入れていませんから、手動で消して試してください。

【4988】Re:グラフの作成
お礼  くみ  - 03/4/16(水) 16:02 -

引用なし
パスワード
   Jaka さん:
ありがとうございます。

どうも前のデータが残っていたみたいです。
手動で消しました。
ごめんなさい。

できました!


>>HEALTHシートにもグラフが出てしまった
>
>HEALTHシートにグラフを作るようには、作ってないんですけど...。
>2000と97で、試したみてもHEALTHシートには、グラフなんか表示されませんでした。
>いまいち状況が良く解らないんですけど、もしかしてグラフを1度だけ作って、その後は作ったグラフを流用した言って事だったんでしょうか?
>消さないで何度もグラフを作成すると、グラフが同じ所に作られてしまいます。
>そう言う気の利いたように作ってませんので....。
>ここみたいに1つのグラフを使いつづけたかったのでしょうか?
>[#2617]
>
>>HEALTHシートからグラフは消せません・・・。
>
>あの..、消す処理は入れていませんから、手動で消して試してください。

13531 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free