エクセル2010Excelグラフ - 範囲参照せずにVBAで
問題をdiscountinuousシリーズを描画する方法:私は参照せずに* VBA経由* XY-散布図に*シングル* *不連続*シリーズをプロットする必要がありますシートの範囲。
Y値がシート範囲にレイアウトされている場合、不連続点にブランク値を挿入することで簡単に実現できます。 [データの選択]> [隠しセルと空セル]で[空のセルを次のように表示:ギャップ]を選択する限りです。ここでは(赤でシリーズ2が重要である1)の例である:
だから私はVBAを経由して同じことを再現しようとしていた。
Sub addDiscountinuousSingleSeries()
Dim vx As Variant, vy As Variant
Dim chrtObj As ChartObject, chrt As Chart, ser As Series
Set chrtObj = ActiveSheet.ChartObjects("MyChart"): Set chrt = chrtObj.Chart
Set ser = chrt.SeriesCollection.NewSeries
vx = Array(0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
vy = Array(-1, 1, vbNullString, -1, 1, vbNullString)
'vy = Array(-1, 1, CVErr(xlErrNA), -1, 1, CVErr(xlErrNA)) 'doesn't work either
'vy = Range(RANGE_YVALUES_WITH_BLANK) 'this would work, but I do not want to reference a range
chrt.DisplayBlanksAs = xlNotPlotted 'VBA equivalent to 'Show empty cells as: Gaps'
With ser
ser.Name = "VBA Series"
.XValues = vx
.Values = vy
End With
End Sub
しかし、VYに空白値配列は無視され、2つの垂直バーが接続されているように見えます(緑の系列)。
私はプログラム的に真ん中の行を削除することができることを知っているが、現実の問題に私はそれが(遅すぎる、複雑すぎる)適切なソリューションではありません解決しようとしています。
私の質問:予想される動作を得るために、一連の.Values配列を指定し、vbaの2つの垂直の緑色のセグメント間にギャップを取得する方法はありますか(シリーズは1つしかなく、シート範囲を参照しません)?
私はこの[OP](https://superuser.com/questions/941463/can-empty-cells-be-entered-into-an-arrayことに気づきました-constant-in-excel)も同様の問題がありましたが、何の答えも得られませんでした。 – Janthelme
Excel 2010ではなく、2016 'vy = Array(-1、1、CVErr(xlErrNA)、-1、1、CVErr(xlErrNA))'は、 'chrt.DisplayValueNotAvailableAsBlank = True'と組み合わせて使用できます。 –
ありがとうございます! DisplayValueNotAvailableAsBlankプロパティはExcel 2010に存在しないようですので、残念なことに2010年以降にアップグレードされた可能性があります。 – Janthelme