Excel VBA質問箱 IV

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

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


32952 / 76734 ←次へ | 前へ→

【49009】Re:可変範囲のグラフ作成
回答  Kein  - 07/5/21(月) 0:19 -

引用なし
パスワード
   ↓これを全て、表のあるシートのシートモジュールへ、先頭から入れて下さい。

Private MyLst As String
Private Sh As Worksheet

Private Sub Worksheet_Activate()
  Dim Cnt As Long
    
  With WorksheetFunction
   Cnt = .CountA(Range("A:A"))
   Select Case Cnt
     Case 0: MyLst = "": Exit Sub
     Case 1: MyLst = Range("A:A").SpecialCells(2).Address
     Case Else
      MyLst = Range("A2", Range("A65536").End(xlUp)).Address
    End Select
  End With
  If MyLst <> "" Then
   On Error Resume Next
   With Range("A1").Validation
     .Delete
     .Add xlValidateList, , xlBetween, "=" & MyLst
     .InCellDropdown = True
   End With
   On Error GoTo 0
  End If
  Set Sh = ActiveSheet
  Application.Goto Range("A1"), True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim GetN As String
  Dim Ck As Variant
  Dim MyR As Range
  Dim Wp As Single, Hp As Single
 
  With Target
   If .Count > 1 Then Exit Sub
   If .Address <> "$A$1" Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   If MyLst = "" Then Exit Sub
   If IsNumeric(.Value) Then Exit Sub
   GetN = .Text
   Application.EnableEvents = False
   .Value = Empty
  End With
  Ck = Application.Match(GetN, Range("A:A"), 0)
  If IsError(Ck) Then
   MsgBox "その氏名は見つかりません", 48: Exit Sub
  End If
  With Range("A1", Range("IV1").End(xlToLeft))
   Set MyR = Union(.Cells, Cells(Ck, 1).Resize(, .Count))
  End With
  With ActiveWindow.VisibleRange
   With .Resize(.Rows.Count - 2, .Columns.Count - 2)
     Wp = .Width: Hp = .Height
   End With
  End With
  With ActiveSheet.ChartObjects
   If .Count > 0 Then .Delete
   With .Add(0.1, 0.1, Wp, Hp).Chart
     .SetSourceData MyR, xlRows
     .ChartType = xlColumnClustered
     .HasLegend = False
     .HasTitle = True
     .ChartTitle.Text = GetN
   End With
  End With
  Set MyR = Nothing: Application.EnableEvents = True
End Sub

Private Sub Worksheet_Deactivate()
  If Not Sh Is Nothing Then
   With Sh.ChartObjects
     If .Count > 0 Then .Delete
   End With
   Set Sh = Nothing
  End If
End Sub

いったん他のシートを開いてから当該シートに戻ると、A1セルに入力規則の
ドロップダウン矢印が出ます。リストから氏名を選択すると、ほぼ画面一杯に
グラフが挿入されます。別の人のグラフを見たいときは、また他のシートを
開いてから戻ればリセットされます。

2 hits

【49001】可変範囲のグラフ作成 tara 07/5/20(日) 16:07 質問
【49002】Re:可変範囲のグラフ作成 ponpon 07/5/20(日) 19:25 発言
【49007】Re:可変範囲のグラフ作成 tara 07/5/20(日) 22:57 お礼
【49012】Re:可変範囲のグラフ作成 ponpon 07/5/21(月) 1:51 発言
【49009】Re:可変範囲のグラフ作成 Kein 07/5/21(月) 0:19 回答
【49054】Re:可変範囲のグラフ作成 tara 07/5/21(月) 23:09 お礼

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