《VBA・CSS》入門実用Tips集 +α

メニュー一覧


HOME

 エクセルVBA
  ●応用●
  5-6

 wwwcount改造

 CSS(スタイルシート)基本

 BiglobeブログCSS

 CSSいろいろリファレンス

 HTML基本

 HTML簡易リファレンス

 Home > エクセルVBA > 5-6 応用

● グラフに引いた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             'チャートエリア選択

  'X軸の解像度としての幅を取得
  Gpix_w = ActiveChart.PlotArea.InsideWidth

  'グラフX軸のグラフスケール長さ取得 (X軸最大値-X軸最小値)
  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

  '直線間距離をX軸距離に計算
  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






○サンプルファイルダウンロード○(準備中)






 − Copyright(2007). 犬神犬 −