[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでminを使う場合の記述の仕方』(くろたろう)
グラフの範囲を自動変更するマクロを自作して使用していたのですが Excel2007から2010にアップグレードしたところ動かなくなりました。
内容はアクティブブックのグラフシートの軸の最小値・最大値を最適化するものです。
コメントの「'問題箇所」としたところの変数haniの内容がまずいようです。 動かすと、haniには 「"'201405'!$BD$321:$BD$341,'201404'!$BD$321:$BD$340,'201403'!$BD$321:$BD$339,'201402'!$BD$321:$BD$339,'201401'!$BD$321:$BD$339"」 が入ります。 ワークシート上で =min("'201405'!$BD$321:$BD$341,'201404'!$BD$321:$BD$340,'201403'!$BD$321:$BD$339,'201402'!$BD$321:$BD$339,'201401'!$BD$321:$BD$339") は#VALUEで、 =MIN('201405'!$BD$321:$BD$341,'201404'!$BD$321:$BD$340,'201403'!$BD$321:$BD$339,'201402'!$BD$321:$BD$339,'201401'!$BD$321:$BD$339) は値が出たため、""が邪魔なようです。
修正はどのようにすればよいでしょうか。ご教示下さい。
蛇足となるかもしれませんが、コードの全文を載せておきます。
Sub MM_Graph_MinMaxChange_Auto() 'グラフの体裁を変更する
Dim i As Long, j As Long Dim tmpMin As Double, tmpMax As Double Dim tmprange As String, tmprsht As String Dim buf, bufrange Dim hani As String Dim yoyu As Double Dim keta As Long
If ActiveWorkbook.Charts.Count = 0 Then MsgBox "グラフはありません。" Exit Sub End If
yoyu = InputBox("上下のりしろを入力") keta = InputBox("切り捨てる桁を入力", , 0)
For i = 1 To ActiveWorkbook.Charts.Count ActiveWorkbook.Charts(i).Activate With ActiveSheet
For j = 1 To ActiveChart.SeriesCollection.Count
buf = Split(ActiveChart.SeriesCollection(j).Formula, ",") tmprange = buf(2) If (j = 1) Then hani = tmprange Else hani = hani & "," & tmprange End If
Next j
tmpMin = Round(Application.WorksheetFunction.Min(Range(hani)) - yoyu, keta) '問題箇所 tmpMax = Round(Application.WorksheetFunction.Max(Range(hani)) + yoyu, keta) '問題箇所
With ActiveChart.Axes(xlValue) .MaximumScale = tmpMax .MinimumScale = tmpMin End With
With ActiveChart .SizeWithWindow = True End With
End With Next i
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
シートでは Min の中に複数シートのアドレスを指定できますが、 Range 内のアドレスに複数シートを指定はできないようです。
tmprange = buf(2) If (j = 1) Then tmpMin = Application.Min(Range(tmprange)) tmpMax = Application.Max(Range(tmprange)) Else tmpMin = Application.Min(Range(tmprange), tmpMin) tmpMax = Application.Max(Range(tmprange), tmpMax) End If
のように修正してはどうでしょうか。 (Mook) 2014/05/12(月) 19:18
Mookさん、ありがとうございます! 明日検証してみます。
ちなみに2007では動いていた気がするんですが、2010からなんでしょうか。 …もしかしたら2003を使用してた時に作成して 2007では使ってなかったのかもしれません(記憶が曖昧)
2010にしたら、マクロ名も 「MM_グラフ_MinMax変更_自動」のようにつけて動いていたコードが 「MM_グラ_MinMax×更×動」のようなよくわからない名前になってしまい、 全アルファベットに変更したりと地味に煩わしいです(´д⊂)‥ハゥ (くろたろう) 2014/05/12(月) 22:22
ご記載頂いたように書き換え、Round部分の記述を修正して上手く行くようになりました。 (maxがminになっていたので変更してます) ありがとうございました!
他のマクロも地道に変更点を見つけて修正していきます。 (くろたろう) 2014/05/13(火) 10:42
コピーミスでしたね。 一応修正しておきました。 (Mook) 2014/05/13(火) 10:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.