roman_holidayのプロフィール
- ベストアンサー数
- 1
- ベストアンサー率
- 100%
- お礼率
- 0%
- 登録日2020/02/27
- 性別男性
- 年代50代
- 都道府県兵庫県
- マクロでグラフの範囲を変えるとエラーが出ます
およそ12000~15000ほどある2列のデータを散布図で描画し、y値の大きい物だけデータラベルを表示させるマクロを作りました。 最初は全データを表示するようにしていて、その時は上手く動いていたのですが一部のみを表示するように書き直したところ、HasDataLabelの所で「1004:パラメータが無効です」のエラーが出るようになりました。 色々値を変えて調べてみたところRangeで指定する範囲の値によってエラーが出たりでなかったりしていました。およそ3800行辺りを指定するとエラーになるようです。 どう対処すれば良いかまるで分からないので対処法について至急ご教示願います。 以下ソースです。よろしくお願いします。 Option Explicit Sub makechart() '変数定義 Dim cmax As Long, i As Long, st As Long, en As Long, cst As Long, cen As Long Dim x As Double, y As Double Dim ws1 As Worksheet Dim alldata As Range, spectrum As Range Dim ChartObj As Object Set ws1 = Worksheets("022") cmax = ws1.Range("A1048576").End(xlUp).Row '範囲指定 st = 450 en = 500 'セルの初期位置 i = 8 x = Val(Cells(i, 1).Value) Do While x < st And i <= cmax i = i + 1 If (i > cmax) Then MsgBox ("下限値オーバー") End End If x = Val(Cells(i, 1).Value) Loop cst = i Do While x < en And i <= cmax i = i + 1 If (i > cmax) Then MsgBox ("上限値オーバー") End End If x = Val(Cells(i, 1).Value) Loop cen = i Set alldata = Range("A8:B" & cmax) Set spectrum = Range("A" & cst & ":B" & cen) ←この値によってエラーが出たり出なかったりする With ActiveSheet.Shapes.AddChart.Chart '散布図追加 .ChartType = xlXYScatter .SetSourceData spectrum For i = cst To cmax x = Val(Cells(i, 1).Value) y = Val(Cells(i, 2).Value) If (y > 1000000) Then .SeriesCollection(1).Points(i).HasDataLabel = True ←ここでエラー .SeriesCollection(1).Points(i).DataLabel.Text = Str(x) .SeriesCollection(1).Points(i).DataLabel.Position = xlLabelPositionAbove End If Next i End With End Sub
- ベストアンサー
- Excel(エクセル)
- nob0054
- 回答数2
- マクロでグラフの範囲を変えるとエラーが出ます
およそ12000~15000ほどある2列のデータを散布図で描画し、y値の大きい物だけデータラベルを表示させるマクロを作りました。 最初は全データを表示するようにしていて、その時は上手く動いていたのですが一部のみを表示するように書き直したところ、HasDataLabelの所で「1004:パラメータが無効です」のエラーが出るようになりました。 色々値を変えて調べてみたところRangeで指定する範囲の値によってエラーが出たりでなかったりしていました。およそ3800行辺りを指定するとエラーになるようです。 どう対処すれば良いかまるで分からないので対処法について至急ご教示願います。 以下ソースです。よろしくお願いします。 Option Explicit Sub makechart() '変数定義 Dim cmax As Long, i As Long, st As Long, en As Long, cst As Long, cen As Long Dim x As Double, y As Double Dim ws1 As Worksheet Dim alldata As Range, spectrum As Range Dim ChartObj As Object Set ws1 = Worksheets("022") cmax = ws1.Range("A1048576").End(xlUp).Row '範囲指定 st = 450 en = 500 'セルの初期位置 i = 8 x = Val(Cells(i, 1).Value) Do While x < st And i <= cmax i = i + 1 If (i > cmax) Then MsgBox ("下限値オーバー") End End If x = Val(Cells(i, 1).Value) Loop cst = i Do While x < en And i <= cmax i = i + 1 If (i > cmax) Then MsgBox ("上限値オーバー") End End If x = Val(Cells(i, 1).Value) Loop cen = i Set alldata = Range("A8:B" & cmax) Set spectrum = Range("A" & cst & ":B" & cen) ←この値によってエラーが出たり出なかったりする With ActiveSheet.Shapes.AddChart.Chart '散布図追加 .ChartType = xlXYScatter .SetSourceData spectrum For i = cst To cmax x = Val(Cells(i, 1).Value) y = Val(Cells(i, 2).Value) If (y > 1000000) Then .SeriesCollection(1).Points(i).HasDataLabel = True ←ここでエラー .SeriesCollection(1).Points(i).DataLabel.Text = Str(x) .SeriesCollection(1).Points(i).DataLabel.Position = xlLabelPositionAbove End If Next i End With End Sub
- ベストアンサー
- Excel(エクセル)
- nob0054
- 回答数2