Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


43706 / 76736 ←次へ | 前へ→

【38070】Re:Excelにてグラフを作成するには
回答  Kein  - 06/5/25(木) 22:52 -

引用なし
パスワード
   Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
  Dim XVR As Range, VR As Range
  Dim MyCh As ChartObject
  Dim Nm As String
 
  If Target.Address = "$A$1" Then
  'ダブルクリックしたセルのアドレスが A1 なら

   With Sh.ChartObjects
   'アクティブシート(Shに格納されている)のグラフオブジェクトについて

     If .Count > 0 Then
     'もし一つ以上配置されていれば

      .Item(1).Visible = IIf(.Item(1).Visible, False, True)
      'Indexが 1 (最初に配置されたもの)の表示がされていれば
      '非表示にし、非表示なら表示する

     End If
   End With
   アクティブシートのグラフオブジェクトについての記述はここまで

   Cancel = True: Exit Sub
   'ダブルクリックした際、そのセルが編集状態になるのを停止し
   'マクロの実行を終わる

  End If
  If Intersect(Target, Range("A2", Range("A65536").End(xlUp))) Is _
  Nothing Then Exit Sub
  'ダブルクリックしたセルが A1 でなかった場合、A2〜A列最終入力行まで
  'のセルでなかったらマクロ実行を終わる
 
  Cancel = True
  'ダブルクリックした際、そのセルが編集状態になるのを停止する

  Set XVR = Range("C1", Range("IV1").End(xlToLeft))
  'C1セルから項目が入力されている右端までを、Rangeオブジェクト変数に格納する
  'そこが項目軸範囲となる
 
  Set VR = XVR.Offset(Target.Row - 1)
  '項目軸にする範囲から、ダブルクリックした行より一つ少ない数だけ
  '下へ移動した範囲が、数値軸範囲になる。そこをRangeオブジェクト変数に格納

  Nm = Target.Offset(, 1).Text
  'ダブルクリックしたセルの右隣り(B列)の値をグラフタイトルとするため
  '文字列型変数に格納する

  Application.ScreenUpdating = False
  '画面のブレを抑止する

  If Sh.ChartObjects.Count > 0 Then
  'アクティブシートに既にグラフが配置されていれば

   Set MyCh = Sh.ChartObjects(1)
   'それをオブジェクト型変数に格納する

   If MyCh.Visible = False Then MyCh.Visible = True
   'もし非表示になっていたら、表示する

   MyCh.Chart.SeriesCollection(1).Delete
   '以前にプロットしていた系列を削除する

  Else
  'もしグラフが配置されていなければ

   With Sh.Range("C2:I22")
   'アクティブシートの C2:I11 の範囲で

     Set MyCh = Sh.ChartObjects.Add(.Left, .Top, .Width, .Height)
     'グラフをその範囲に合わせた位置と大きさに挿入する

   End With
  End If
  MyCh.Chart.ChartWizard VR, xlLine, 4, xlRows, , , 0, Nm
  'グラフを作成するメソッド ChartWizard をヘルプで調べれば
  '各引数の意味が分かります。値が空のところは省略可能な引数です

  MyCh.Chart.SeriesCollection(1).XValues = XVR
  'プロットした範囲は数値軸のみなので、項目軸範囲を追加する

  Application.ScreenUpdating = True
  '仮面のブレ抑止を解除

  Set XVR = Nothing: Set VR = Nothing: Set MyCh = Nothing
  'オブジェクト変数と格納したオブジェクトの関係を切断する

End Sub

・・ということです。

1 hits

【37996】Excelにてグラフを作成するには 一年生 06/5/24(水) 21:39 質問
【37998】Re:Excelにてグラフを作成するには Kein 06/5/24(水) 22:10 回答
【37999】Re:Excelにてグラフを作成するには 一年生 06/5/24(水) 22:31 質問
【38000】Re:Excelにてグラフを作成するには Kein 06/5/24(水) 23:14 発言
【38005】Re:Excelにてグラフを作成するには 一年生 06/5/25(木) 5:46 質問
【38020】Re:Excelにてグラフを作成するには Kein 06/5/25(木) 10:59 回答
【38021】Re:Excelにてグラフを作成するには Kein 06/5/25(木) 11:04 発言
【38066】Re:Excelにてグラフを作成するには 一年生 06/5/25(木) 21:21 質問
【38070】Re:Excelにてグラフを作成するには Kein 06/5/25(木) 22:52 回答
【38176】Re:Excelにてグラフを作成するには 一年生 06/5/28(日) 17:20 お礼

43706 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free