● グラフに引いた2本の直線を利用して、直線間のX軸範囲を取得するVBAサンプル
計算するボタンを押すと、赤い直線から青い直線で示す区間の時間を計算します。
(処理の説明)
@グラフを選択します。
AX軸の幅を取得。 (解像度としての幅)
BX軸のスケールを取得。 (グラフの単位幅)
C赤(Line 1)と青(Line 2)の直線の位置を取得します。
D直線間距離をX軸距離に計算。
Eテキストボックスへ文字と結果を表示します。
FテキストボックスとLineの位置を調整し完了。
《記述場所》
〔ソースリスト〕
Option Explicit
Private Sub CommandButton1_Click()
Dim myf As String
Dim mys As String
Dim Gpix_w As Single, G_Xsize As Single, Gpix_left As Single
Dim Sline1_left As Single, Sline2_left As Single, ANS As Single
myf = ActiveWorkbook.Name
mys = ActiveSheet.Name
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.ChartArea.Select
Gpix_w = ActiveChart.PlotArea.InsideWidth
G_Xsize = ActiveChart.Axes(xlCategory).MaximumScale _
- ActiveChart.Axes(xlCategory).MinimumScale
ActiveChart.Shapes("Line 1").Width = 0
ActiveChart.Shapes("Line 2").Width = 0
Sline1_left = ActiveChart.Shapes("Line 1").Left
Sline2_left = ActiveChart.Shapes("Line 2").Left
ANS = (Sline2_left - Sline1_left) / (Gpix_w / G_Xsize)
ActiveChart.Shapes("テキスト 4").Select
Selection.Characters.Text = "運転時間 " & Chr(10) & Format(ANS, "0.00") & "秒 "
ActiveChart.Shapes("テキスト 4").Width = 70
ActiveChart.Shapes("テキスト 4").Height = 35
ActiveChart.Shapes("テキスト 4").Left = Sline1_left + (Sline2_left - Sline1_left) / 2 _
- ActiveChart.Shapes("テキスト 4").Width / 2
ActiveChart.Shapes("テキスト 4").Top = ActiveChart.Shapes("Line 1").Top _
+ ActiveChart.Shapes("Line 1").Height / 2
ActiveChart.Shapes("Line 3").Left = Sline1_left
ActiveChart.Shapes("Line 3").Width = Sline2_left - Sline1_left
ActiveChart.Shapes("Line 3").Top = ActiveChart.Shapes("Line 1").Top _
+ ActiveChart.Shapes("Line 1").Height / 2
ActiveChart.Shapes("Line 2").Top = ActiveChart.Shapes("Line 1").Top
ActiveChart.Shapes("Line 2").Height = ActiveChart.Shapes("Line 1").Height
End Sub
○サンプルファイルダウンロード○(準備中)
|