Excel VBA質問箱 IV

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

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


9877 / 13646 ツリー ←次へ | 前へ→

【24971】散布図の系列について みぽりん 05/5/16(月) 13:11 質問[未読]
【24972】Re:散布図の系列について Kein 05/5/16(月) 13:23 発言[未読]
【24996】Re:散布図の系列について みぽりん 05/5/17(火) 9:43 質問[未読]
【24997】Re:散布図の系列について Kein 05/5/17(火) 10:25 回答[未読]
【24998】Re:散布図の系列について みぽりん 05/5/17(火) 13:21 お礼[未読]

【24971】散布図の系列について
質問  みぽりん  - 05/5/16(月) 13:11 -

引用なし
パスワード
   マクロを使ってはいるものの、超初心者レベルです。
初歩的な質問かもしれませんが、宜しくお願いいたします。

実験データ(テキストデータ)から散布図を作成するという
日に何度も行う業務をマクロにしました。
マクロの記録でソースを作成してから、汎用性があるように
ファイル名入力などの変更をしました。
系列は1つしかないのですが、記録したソースを走らせてみると、
勝手に系列2,3,4ができてしまいました。よくわからないので、
マクロの記録で系列2,3,4を消して、そのソースを追加して、
なんとか必要な散布図にしています。

<系列2,3,4を消す>
ActiveChart.SeriesCollection(2).Select
Selection.Delete
ActiveChart.SeriesCollection(3).Select
Selection.Delete
ActiveChart.SeriesCollection(4).Select
Selection.Delete

マクロを使わないで散布図を作成した時は、系列をまったく
意識する必要がなかったのに、どうして勝手に系列ができ
たんでしょうか?どこかで系列について記述しないと
いけないんですか?散布図ができるまでに時間がかかるので、
最初から系列1だけを表示したいのですが、どなたか
教えてください。宜しくお願いいたします。

【24972】Re:散布図の系列について
発言  Kein  - 05/5/16(月) 13:23 -

引用なし
パスワード
   どんなコードでやっているのでしょーか ?

【24996】Re:散布図の系列について
質問  みぽりん  - 05/5/17(火) 9:43 -

引用なし
パスワード
   Keinさん、お返事どうもありがとうございます。

お恥ずかしいのですが、マクロについての知識がありません。
コードってどういうことを言うのでしょうか?
前後があるので、わかりにくいかと思いますが、
散布図作成のところのソースは以下の通りです。
これで散布図を作成することはできています。
マクロの記録で記録したものを使っているのですが、
表示した覚えのない系列の線が表示されてしまい、
この後に系列を削除する記述を入れています。
説明が悪くて申し訳ありません。どこかに系列を表示しない
記述をしないといけないのでしょうか?
宜しくお願いいたします。

'<散布図作成>
  
  Dim r As Integer
  Range("G47").End(xlDown).Select
  r = ActiveCell.Row
  Charts.Add
  
  ActiveChart.ChartType = xlXYScatter
  Dim Mfile As String
  Mfile = Mid(FName, 29, 11)
  
  
  ActiveChart.SetSourceData Source:=Sheets(Mfile).Range("G47:G" & CStr(r), "J47:J" & CStr(r)) _
    , PlotBy:=xlColumns
  
   ActiveChart.Location Where:=xlLocationAsObject, Name:=Mfile
  
  Dim mf As String
  mf = Application.InputBox(Prompt:="ファイル名を入力してください", Type:=2)
  
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = mf
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "potential[V]"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "current density[mA/g]"
  End With
  With ActiveChart.Axes(xlCategory)
    .HasMajorGridlines = True
    .HasMinorGridlines = False
  End With
  With ActiveChart.Axes(xlValue)
    .HasMajorGridlines = True
    .HasMinorGridlines = False
  End With
  ActiveChart.HasLegend = False
    Selection.AutoScaleFont = False
  With Selection.Font
    .Name = "MS Pゴシック"
    .FontStyle = "標準"
    .Size = 18
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
    .Background = xlAutomatic
  End With
  ActiveChart.PlotArea.Select
  With Selection.Border
    .ColorIndex = 1
    .Weight = xlMedium
    .LineStyle = xlContinuous
  End With
  
  With Selection.Interior
    .ColorIndex = 15
    .PatternColorIndex = 1
    .Pattern = xlSolid
  End With
  
  ActiveChart.Axes(xlCategory).MajorGridlines.Select
  With Selection.Border
    .ColorIndex = 57
    .Weight = xlHairline
    .LineStyle = xlDot
  End With

【24997】Re:散布図の系列について
回答  Kein  - 05/5/17(火) 10:25 -

引用なし
パスワード
   まとめてすっきりさせると、こんなコードになります。(コードはソースコードの意味)
処理の順序を直したり、無駄を省いたりするのが編集です。編集がちゃんと出来る
ようになって、初めて中級へと進めます。頑張ってください。


  Dim r As Long
  Dim PltR As Range
  Dim Mfile As String, mf As String
  
  mf = InputBox("ファイル名を入力してください")
  If mf = "" Then Exit Sub
  Mfile = Mid(FName, 29, 11)
  r = Range("G65536").End(xlUp).Row
  With Sheets(Mfile)
    Set PltR = Union(.Range("G47:G" & r), .Range("J47:J" & r))
  End With
  With Charts.Add
    .ChartType = xlXYScatter
    .SetSourceData Source:=PltR, PlotBy:=xlColumns
    .HasTitle = True
    .ChartTitle.Characters.Text = mf
    .HasLegend = False
    With .Axes(xlCategory)
      .HasTitle = True
      .AxisTitle.Characters.Text = "potential[V]"
      With .MajorGridlines
       .ColorIndex = 57
       .Weight = xlHairline
       .LineStyle = xlDot
      End With
    End With
    With .Axes(xlValue)
      .HasTitle = True
      .AxisTitle.Characters.Text = "current density[mA/g]"
    End With
    With .PlotArea
      With .Border
        .ColorIndex = 1
        .Weight = xlMedium
        .LineStyle = xlContinuous
      End With
      With .Interior
        .ColorIndex = 15
        .PatternColorIndex = 1
        .Pattern = xlSolid
      End With
    End With
    .Location Where:=xlLocationAsObject, Name:=Mfile
  End With
  Set PltR = Nothing

【24998】Re:散布図の系列について
お礼  みぽりん  - 05/5/17(火) 13:21 -

引用なし
パスワード
   Keinさん、どうもありがとうございました。

こんな基礎の基礎を聞くな!とおっしゃりたいのでは
ないかと思うところ、ソースを直してくださって、
申し訳ありません。とても助かりました。
今はマニュアルを見てもちんぷんかんぷんで、
直すところもわからないような感じなのですが、
中級は無理でもせめて初級と言えるくらいには
頑張りたいと思います。
とりあえず、直していただいたソースを理解すること
から始めたいと思います。どうもありがとうございました。

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