過去ログ

                                Page     252
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼グラフについて(散布図)  いぬだわん 02/10/21(月) 22:36
   ┗Re:グラフについて(散布図)  Jaka 02/10/22(火) 10:05
      ┗Re:グラフについて(散布図)  いぬだわん 02/10/22(火) 12:00
         ┗こりもせず再チャレンジ。  Jaka 02/10/23(水) 10:18
            ┗違う方を張りつけてしまいました。  Jaka 02/10/23(水) 10:26
               ┗Re:驚  いぬだわん 02/10/24(木) 10:24
                  ┗すみません。作りなおしました。  Jaka 02/10/24(木) 11:26

 ───────────────────────────────────────
 ■題名 : グラフについて(散布図)
 ■名前 : いぬだわん
 ■日付 : 02/10/21(月) 22:36
 -------------------------------------------------------------------------
   こんばんは。

散布図グラフについての質問です。

ある任意の数値データについての散布図を作ろうとしています。
例としてA1より

A B C D
1 2 3 4
5 6 7 8
9 1 2 3
4 5 6 7
8 9 1 2

とします。

まず、ご存知のとおり、
散布図を作成するには、XおよびY軸の値の範囲を
SeriesCollection毎に指定しなくてはいけないのですが、
先にX軸の値の範囲をInputBoxか何かで指定-(1)し、
次にApplication.Dialogs(xlDialogsChartsSourceData)を表示させ、
「系列」タブの「追加」ボタンを押したときに、
X軸の値は(1)とし、Y軸の値を指定していきます。

今のところ考えたのが、
'---
Sub Graph_xlXYScatter()

Dim strTitle,strMsg as String
Dim myRange as Range

strTitle="X軸の値の設定"
strMsg="X軸の値を設定してください。"

set myRange=Application.InputBox(prompt:=strMsg,Title:=strTitle,Type:=8)

Charts.Add

Application.Dialogs(xlDialogChartSourceData).Show

ActiveChart.SetSourceData Source:=Range(myRange,(?)).CurrentRegion,PlotBy:=xlColumns

End Sub
'---

ですが、
SetSourceData Sourceのところで、
Application.Dialogs(xlDialogChartSourceData)の
「OK」を押すまでのLoop文を入れてもいいのでしょうか?
また、折角InputBoxでX軸の値を指定しても、
Application.Dialogs(xlDialogChartSourceData).Showをしたら、
クリアされてしまいます。

わかる方がいらっしゃれば教えていただければと思います。
 ───────────────────────────────────────  ■題名 : Re:グラフについて(散布図)  ■名前 : Jaka  ■日付 : 02/10/22(火) 10:05  -------------------------------------------------------------------------
   こんにちは。

グラフは、特に解らないんですけど。
解らないんで、いぬだわんさんのやりたい事とまるっきり外している可能性があります。
しかも、姑息な方法です。
前に考えてみたんだけどやっぱり抵抗があります。
使えないようでしたら捨ててください。

Sub aa()
  Dim myRange As Range
  Dim strTitle, strMsg As String
  Dim ShN As String
  strTitle = "X軸の値の設定"
  strMsg = "X軸の値を設定してください。"
  Set myRange = Application.InputBox(prompt:=strMsg, Title:=strTitle, Type:=8)
  ShN = "=" & ActiveSheet.Name & "!"
  Charts.Add
  ActiveChart.ChartType = xlXYScatter
  SendKeys ShN & myRange.Address
  SendKeys "({ENTER})"
  Application.Dialogs(xlDialogChartSourceData).Show
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
  Worksheets("Sheet1").Select
End Sub
 ───────────────────────────────────────  ■題名 : Re:グラフについて(散布図)  ■名前 : いぬだわん  ■日付 : 02/10/22(火) 12:00  -------------------------------------------------------------------------
   ▼Jaka さん:
こんにちは。

こんな無理難題に答えて頂きまして
感謝感激です。
まずはお礼まで。
 ───────────────────────────────────────  ■題名 : こりもせず再チャレンジ。  ■名前 : Jaka  ■日付 : 02/10/23(水) 10:18  -------------------------------------------------------------------------
   こんにちは。

>まず、ご存知のとおり、
>散布図を作成するには、XおよびY軸の値の範囲を
>SeriesCollection毎に指定しなくてはいけないのですが、
>先にX軸の値の範囲をInputBoxか何かで指定-(1)し、
>次にApplication.Dialogs(xlDialogsChartsSourceData)を表示させ、
>「系列」タブの「追加」ボタンを押したときに、
>X軸の値は(1)とし、Y軸の値を指定していきます。

全く知りませんでした。
知らない上、全く解りませんから、また外れていると思います。
手作業でもグラフなんてものを、作ったことが無い奴がレスするのもなんですが..。
自分でもおこがましい奴だと思ってます。
手作業での手順を書いてくれると、最終的な物が何となく解って力添えできるかもしれません。
できない方が95%...。


Sub plpl()
  Dim strTitle, strMsg As String
  Dim myRange As Variant
  strTitle = "X軸の値の設定"
  strMsg = "X軸の値を設定してください。"
  On Error Resume Next
  Set myRange = Application.InputBox(prompt:=strMsg, Title:=strTitle, Type:=8)
  If myRange Is Nothing Then End
  On Error GoTo 0
  Shname = ActiveSheet.Name
  Application.ScreenUpdating = False
  'Worksheets("Sheet1").Range(myRange.Address).CurrentRegion.Select
  
  'ActiveWorkbook.Charts.Add(after:=Worksheets(Worksheets.Count)).Name = "グラフ1"
  
  ActiveWorkbook.Charts.Add(after:=ActiveSheet).Name = "グラフ1"
  Worksheets("Sheet1").Range(myRange.Address).CurrentRegion.Copy
  Charts("グラフ1").Paste
  Charts("グラフ1").Activate
  Application.CutCopyMode = False
  ActiveChart.ChartType = xlXYScatter
  'ActiveChart.Location Where:=xlLocationAsObject, Name:=Shname
  '↑ このチェックを外すとアクティブシートにグラフができます。
  Worksheets("Sheet1").Select
  Application.ScreenUpdating = True
End Sub
 ───────────────────────────────────────  ■題名 : 違う方を張りつけてしまいました。  ■名前 : Jaka  ■日付 : 02/10/23(水) 10:26  -------------------------------------------------------------------------
   Sub popo()
  Dim strTitle, strMsg As String
  Dim myRange As Variant
  strTitle = "X軸の値の設定"
  strMsg = "X軸の値を設定してください。"
  On Error Resume Next
  Set myRange = Application.InputBox(prompt:=strMsg, Title:=strTitle, Type:=8)
  If myRange Is Nothing Then End
  On Error GoTo 0
  Shname = ActiveSheet.Name
  Application.ScreenUpdating = False
  ActiveWorkbook.Charts.Add(after:=Worksheets(Shname)).Name = "グラフ1"
  Worksheets(Shname).Range(myRange.Address).CurrentRegion.Copy
  Charts("グラフ1").Paste
  Charts("グラフ1").Activate
  Application.CutCopyMode = False
  ActiveChart.ChartType = xlXYScatter
  'ActiveChart.Location Where:=xlLocationAsObject, Name:=Shname
  '↑ このチェックを外すとアクティブシートにグラフができます。
  Worksheets(Shname).Select
  Application.ScreenUpdating = True
End Sub
 ───────────────────────────────────────  ■題名 : Re:驚  ■名前 : いぬだわん  ■日付 : 02/10/24(木) 10:24  -------------------------------------------------------------------------
   ▼Jaka さん:
こんにちは。

ホントありがとうございます。

私も、
散布図の作成のマクロを作成しましたが、
仮にA,B,C,Dに数値データがあるとして、
Xの値の範囲をB列に指定すると、
勝手に(笑)A列がX軸の値になってしまうんですよね。
もうちょっと考えてみたいと思います。

いつもいつも
無理難題の質問ばかりさせて頂いております。
マクロで「これは絶対できない」というものってあるんですかねぇ?

また似たような質問をするかもしれませんが、
そのときはよろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : すみません。作りなおしました。  ■名前 : Jaka  ■日付 : 02/10/24(木) 11:26  -------------------------------------------------------------------------
   ▼いぬだわん さん:
>▼Jaka さん:
>こんにちは。
>
>ホントありがとうございます。
>
>私も、
>散布図の作成のマクロを作成しましたが、
>仮にA,B,C,Dに数値データがあるとして、
>Xの値の範囲をB列に指定すると、
>勝手に(笑)A列がX軸の値になってしまうんですよね。
>もうちょっと考えてみたいと思います。
>
>いつもいつも
>無理難題の質問ばかりさせて頂いております。
>マクロで「これは絶対できない」というものってあるんですかねぇ?
>
>また似たような質問をするかもしれませんが、
>そのときはよろしくお願いいたします。

これのせる前にレスついちゃったんで..。

Sub mkmk()
  Dim strTitle, strMsg As String
  Dim myRange As Variant
  Dim Shname As String
  strTitle = "X軸の値の設定"
  strMsg = "X軸の値を設定してください。"
  On Error Resume Next
  Set myRange = Application.InputBox(prompt:=strMsg, Title:=strTitle, Type:=8)
  If myRange Is Nothing Then End
  On Error GoTo 0
  Shname = ActiveSheet.Name
  Set myRange = Worksheets(Shname).Range(myRange.Address).CurrentRegion
  Charts.Add
  With ActiveChart
    .ChartType = xlXYScatter
    .SetSourceData Source:=myRange, PlotBy:=xlRows
    .Location Where:=xlLocationAsObject, Name:=Shname
  End With
  ActiveChart.HasTitle = True
  ActiveChart.ChartTitle.Characters.Text = "名前××"
  Set myRange = Nothing
End Sub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 252