Excel VBA質問箱 IV

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

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


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

【12031】2次回帰曲線のマクロについて ぽんぽん 04/3/22(月) 16:06 質問
【12034】Re:2次回帰曲線のマクロについて こうちゃん 04/3/22(月) 16:45 回答
【12047】Re:2次回帰曲線のマクロについて ぽんぽん 04/3/22(月) 17:36 質問
【12050】Re:2次回帰曲線のマクロについて こうちゃん 04/3/22(月) 18:11 回答
【12054】Re:2次回帰曲線のマクロについて ぽんぽん 04/3/23(火) 9:23 質問
【12064】Macユーザーの方、Helpお願いします。 こうちゃん 04/3/23(火) 11:33 発言
【12067】すみません、私のミスです。 ぽんぽん 04/3/23(火) 12:02 質問
【12069】Re:すみません、私のミスです。 こうちゃん 04/3/23(火) 13:06 回答
【12072】Re:すみません、私のミスです。 ぽんぽん 04/3/23(火) 14:04 質問
【12074】Re:すみません、私のミスです。 こうちゃん 04/3/23(火) 14:45 回答
【12075】すみません。 ぽんぽん 04/3/23(火) 15:08 質問
【12078】Re:すみません。 こうちゃん 04/3/23(火) 15:33 発言
【12079】Re:すみません。 ぽんぽん 04/3/23(火) 15:43 発言
【12080】Re:すみません。 こうちゃん 04/3/23(火) 16:01 発言
【12082】Re:すみません。 ぽんぽん 04/3/23(火) 16:09 お礼

【12031】2次回帰曲線のマクロについて
質問  ぽんぽん  - 04/3/22(月) 16:06 -

引用なし
パスワード
   こんにちは、最近このサイトを知り、先週は分析ツールについて
色々と教えていただきました。(こうちゃんさんありがとうございます)
こうちゃんさんに色々アドバイス頂き、回帰分析の方はなんとかなりました。
次に2次回帰曲線をマクロで作りたいのですが、一番簡単な方法はなんでしょうか?
マクロについてはすごく素人なので、よろしくお願いいたします。

【12034】Re:2次回帰曲線のマクロについて
回答  こうちゃん E-MAIL  - 04/3/22(月) 16:45 -

引用なし
パスワード
   ぽんぽんさん、こんにちは
>こんにちは、最近このサイトを知り、先週は分析ツールについて
>色々と教えていただきました。(こうちゃんさんありがとうございます)
>こうちゃんさんに色々アドバイス頂き、回帰分析の方はなんとかなりました。
>次に2次回帰曲線をマクロで作りたいのですが、一番簡単な方法はなんでしょうか?
>マクロについてはすごく素人なので、よろしくお願いいたします。

またまた、しろうとの「こう」ファミリーの次男です。

「マクロで」ってことですが、どこにどんな形で曲線つくるんでしょうか?
回帰式ができているのですから、その式でy値を計算してグラフ作っちゃえばいいと思いますが、どうでしょ。
セルに計算結果を残したくなければ難しいけど、非表示にしちゃえばいいしね。

#ここでも条件提示が少なくてレスつけづらいです(^^;)

【12047】Re:2次回帰曲線のマクロについて
質問  ぽんぽん  - 04/3/22(月) 17:36 -

引用なし
パスワード
   こうちゃんさん、こんにちは。
またまた助けていただいて・・・ホントにありがたいです。
こうちゃんさんの言う通り、回帰式ができているのでそれを元に
グラフを作ればいいのですよね。その場合、グラフ上にグラフを書く際に
元になったデータをスポットでおくことは簡単ですか?

今、私なりにできてるところまでいいますと、3点で2次回帰の
グラフを書きました。そこまでは「マクロの記録」でできました。
そこからグラフの加工をして行くと、途中で止まります。
縦軸の値を小数点以下1桁で示したいのですが、ダメでした。
なのでそこの部分を削除したのが下記のものです。
縦軸の値を小数点以下1桁で示したい場合、どこにどんな構文を入れれば
いいでしょうか? また下記のもので書くと、グラフの大きさが指定通り
ならないのですが・・・単位と言うのはどう示せばいいのでしょう。
それとグラフを指定した場所に作りたいのですが、場所の指定と言うのは
マクロでもできますか?
よろしくお願いします。

Sub name()

'
  Range("E19:E21").Select
  Charts.Add
  ActiveChart.ChartType = xlXYScatter
  ActiveChart.SetSourceData Source:=Sheets("PL00004").Range("E19:E21"), PlotBy _
    :=xlColumns
  ActiveChart.SeriesCollection(1).XValues = "=PL00004!R19C2:R21C2"
  ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00004"
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ACA11 (ng/mL)"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "O.D. (492-630nm)"
  End With
  ActiveChart.HasLegend = False
  ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=2 _
    , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=True _
    ).Select
  ActiveChart.ChartArea.Select
  Selection.AutoScaleFont = False
  With Selection.Font
    .Name = "MS ゴシック"
    .FontStyle = "標準"
    .Size = 7
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
    .Background = xlAutomatic
  End With
  ActiveChart.SeriesCollection(1).Select
  With Selection.Border
    .Weight = xlHairline
    .LineStyle = xlNone
  End With
  With Selection
    .MarkerBackgroundColorIndex = 3
    .MarkerForegroundColorIndex = 3
    .MarkerStyle = xlX
    .Smooth = False
    .MarkerSize = 2
    .Shadow = False
  End With
  ActiveChart.Axes(xlValue).Select
  
  ActiveChart.ChartArea.Select
  ActiveWindow.Visible = False
  Windows("test_ELISA data_001-010.xls").Activate
  Range("H50").Select
  ActiveSheet.Shapes("Chart 17").Select
  Selection.ShapeRange.LockAspectRatio = msoFalse
  Selection.ShapeRange.Height = 138#
  Selection.ShapeRange.Width = 303#
End Sub

【12050】Re:2次回帰曲線のマクロについて
回答  こうちゃん E-MAIL  - 04/3/22(月) 18:11 -

引用なし
パスワード
   ぽんぽんさん、こんにちは

>グラフを作ればいいのですよね。その場合、グラフ上にグラフを書く際に
>元になったデータをスポットでおくことは簡単ですか?
「スポットでおくこと」の意味がわかりません。m(__)m

>縦軸の値を小数点以下1桁で示したいのですが、ダメでした。
  '表示形式
  ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "

>ならないのですが・・・単位と言うのはどう示せばいいのでしょう。
単位はポイントになります。わかりづらいのでセルの幅や高さを基準にするといいでしょう。
この例はB3セルの5倍幅で10倍高さに設定します。
  ActiveChart.ChartArea.Select
  ActiveSheet.Shapes("グラフ 2").Width = Range("B3").Width * 5
  ActiveSheet.Shapes("グラフ 2").Height = Range("B3").Height * 10

>それとグラフを指定した場所に作りたいのですが、場所の指定と言うのは
>マクロでもできますか?
場所の指定もセル位置基準がわかりやすいです。  
  ActiveChart.ChartArea.Select
  ActiveSheet.Shapes("グラフ 2").Left = Range("B3").Left
  ActiveSheet.Shapes("グラフ 2").Top = Range("B3").Top

【12054】Re:2次回帰曲線のマクロについて
質問  ぽんぽん  - 04/3/23(火) 9:23 -

引用なし
パスワード
   こうちゃんさん、ありがとうございます。
また、ご指示通り色々いじくってみました。
で、実行を押してみると、「コンパイルエラー 
SubまたはFunctionが定義されていません」
と出るのです。(1段目が指摘されています)
これはどう直せば良いでしょうか?

【12064】Macユーザーの方、Helpお願いします。
発言  こうちゃん E-MAIL  - 04/3/23(火) 11:33 -

引用なし
パスワード
   ぽんぽんさん、こんにちは

>また、ご指示通り色々いじくってみました。
>で、実行を押してみると、「コンパイルエラー 
>SubまたはFunctionが定義されていません」
>と出るのです。(1段目が指摘されています)
>これはどう直せば良いでしょうか?

ごめんなさい。
1段目じゃあ、わかりません。

もしかしてここのこと?
>ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "

直接これだけ書いたらエラーになります。
グラフがアクティブな状態で試験してください。
できればぽんぽんさんの試験したモジュール全体を表示して、「ここ」でエラーが出ますというように提示していただけるとわかりやすいです。

あっ、Macでしたよね!!
その辺で、関数の違いとかでエラーかな??
だとするとこちらでは検証できませんね。
エラーの原因をつぶしていくしかないので、追加した処理をすべてコメントにして、1行ずつコメントをはずしつつ、コンパイルしてみるとかで、エラー箇所を特定しましょう。

#グラフの軸の書式設定の表示形式の設定をマクロ記録してみてください。

#Macだとなおのこと情報提示がないと回答側でわからないことが多いです。
何度もしつこいようですが、できるだけ情報提示をお願いします。

どなたか、Macユーザの方がレスつけていただけないでしょうかね。

【12067】すみません、私のミスです。
質問  ぽんぽん  - 04/3/23(火) 12:02 -

引用なし
パスワード
   わかりづらくてごめんなさい。
1段目と言うのはマクロの始まりの「Sub ____()」という意味でした。
いじくった結果、End Subの1段上にある「14 hit」というのを消せば
エラーは出なくなりました。

更に質問ですが、X軸の値を小数点以下1桁の構文
ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "

は下に示した中のどこにいれればいいですか?
下の黒丸●のとろこにいれるとエラーが出ます。

Sub 回帰曲線ACA11_2()
'
' 回帰曲線ACA11_2 Macro
' マクロ記録日 : 2004.3.23 ユーザー名 : mitoh yuko
'

'
  ActiveWindow.SmallScroll Down:=-27
  Range("E19:E21").Select
  Charts.Add
  ActiveChart.ChartType = xlXYScatter
  ActiveChart.SetSourceData Source:=Sheets("PL00005").Range("E19:E21"), PlotBy _
    :=xlColumns
  ActiveChart.SeriesCollection(1).XValues = "=PL00005!R19C2:R21C2"
  ActiveChart.SeriesCollection(1).Name = "=""ACA11"""
  ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00005"
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "ACA11"
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ACA11 (ng/mL)"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "O.D. (492-630nm)"
  End With
  ●
   ActiveChart.HasLegend = False
  ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=2 _
    , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=True _
    ).Select
End Sub

【12069】Re:すみません、私のミスです。
回答  こうちゃん E-MAIL  - 04/3/23(火) 13:06 -

引用なし
パスワード
   ぽんぽんさん、こんにちは

>更に質問ですが、X軸の値を小数点以下1桁の構文
>ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "
>
>は下に示した中のどこにいれればいいですか?
>
>Sub 回帰曲線ACA11_2()
>'
>' 回帰曲線ACA11_2 Macro
>' マクロ記録日 : 2004.3.23 ユーザー名 : mitoh yuko
>'
>
>'
この2行はいらないのでは?
---------------------------------------------
>  ActiveWindow.SmallScroll Down:=-27
>  Range("E19:E21").Select
---------------------------------------------
>  Charts.Add
>  ActiveChart.ChartType = xlXYScatter
>  ActiveChart.SetSourceData Source:=Sheets("PL00005").Range("E19:E21"), PlotBy _
>    :=xlColumns
この形ではグラフシートがつくられませんか?
>  ActiveChart.SeriesCollection(1).XValues = "=PL00005!R19C2:R21C2"
>  ActiveChart.SeriesCollection(1).Name = "=""ACA11"""
>  ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00005"
>  With ActiveChart
>    .HasTitle = True
>    .ChartTitle.Characters.Text = "ACA11"
>    .Axes(xlCategory, xlPrimary).HasTitle = True
>    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ACA11 (ng/mL)"
>    .Axes(xlValue, xlPrimary).HasTitle = True
>    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "O.D. (492-630nm)"
>  End With
>  ●
>   ActiveChart.HasLegend = False
>  ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=2 _
>    , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=True _
>    ).Select
>End Sub


で、順番直して実行してみましたが、エラーはでません。
Sub 回帰曲線ACA11_2()
  Charts.Add
  ActiveChart.ChartType = xlXYScatter
  ActiveChart.SetSourceData Source:=Sheets("PL00005").Range("E19:E21"), PlotBy _
    :=xlColumns
  ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00005"
  ActiveChart.SeriesCollection(1).XValues = "=PL00005!R19C2:R21C2"
  ActiveChart.SeriesCollection(1).Name = """ACA11"""
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "ACA11"
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ACA11 (ng/mL)"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "O.D. (492-630nm)"
  End With
  
  ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "

  ActiveChart.HasLegend = False
  ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=2 _
    , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=True _
    ).Select
End Sub

【12072】Re:すみません、私のミスです。
質問  ぽんぽん  - 04/3/23(火) 14:04 -

引用なし
パスワード
   ありがとうございます。
自分なりにいじくってやってみましたが、エラーが出るので
こうちゃんさんが書かれたものをそのままコピーしてやってみました。
やはり

>>ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "

のところでひっかかります。
マックのバグでしょうか?

他にも質問していいですか?
今、ひとつのブックに10個のシートがあります。
それぞれのシートには同じ形でデータが並んでいます。
例で示していたのは[PL00005]というシート中のE19:E21までの
データからグラフを書き始めているのですが、それぞれのシートに
同じようにマクロでグラフを書きたいのです。
グラフはそのアクティブシートのある場所に書きたいです。
その場合
Sub 回帰曲線ACA11_2()
  Charts.Add
  ActiveChart.ChartType = xlXYScatter
  ActiveChart.SetSourceData Source:=Sheets("PL00005").Range("E19:E21"), PlotBy _
    :=xlColumns
  ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00005"
  ActiveChart.SeriesCollection(1).XValues = "=PL00005!R19C2:R21C2"
  ActiveChart.SeriesCollection(1).Name = """ACA11"""

の[PL00005]はどう示せば良いのでしょうか?

【12074】Re:すみません、私のミスです。
回答  こうちゃん E-MAIL  - 04/3/23(火) 14:45 -

引用なし
パスワード
   ぽんぽんさん、こんにちは

>自分なりにいじくってやってみましたが、エラーが出るので
>こうちゃんさんが書かれたものをそのままコピーしてやってみました。
>やはり
>
>>>ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "
>
>のところでひっかかります。
>マックのバグでしょうか?

ですから、[#12064]でマクロ記録を試してみてくださいといっています。
MacではTickLabels.NumberFormatLocal というプロパティがないかも知れないし、違う名前かもしれないので。

>他にも質問していいですか?
>今、ひとつのブックに10個のシートがあります。
>それぞれのシートには同じ形でデータが並んでいます。
>例で示していたのは[PL00005]というシート中のE19:E21までの
>データからグラフを書き始めているのですが、それぞれのシートに
>同じようにマクロでグラフを書きたいのです。
>グラフはそのアクティブシートのある場所に書きたいです。
>その場合
>Sub 回帰曲線ACA11_2()
>   Charts.Add
>   ActiveChart.ChartType = xlXYScatter
>   ActiveChart.SetSourceData Source:=Sheets("PL00005").Range("E19:E21"), PlotBy _
>     :=xlColumns
>   ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00005"
>   ActiveChart.SeriesCollection(1).XValues = "=PL00005!R19C2:R21C2"
>   ActiveChart.SeriesCollection(1).Name = """ACA11"""
>
>の[PL00005]はどう示せば良いのでしょうか?

シート名ですね。「どう」の意味がよくわかりせんが、別シートが例えばSheet2という名前なら、
ActiveChart.SeriesCollection(1).XValues = "=Sheet2!R19C2:R21C2"
のようにどうぞ。

シート名に規則性があればループで処理できるかもしれません。
またも情報が少なくて、そのあたりは直接回答ができません。

質問が複数回にわたるのは構いません。大歓迎です。
ただ、こちらからの質問には答えない、前回のアドバイスなりは試験しない、情報の提示をのお願いはなかなか聞いていただけないでは、レスがつけづらいです。
#怒っているわけではありませんが、若干もどかしく感じております。

【12075】すみません。
質問  ぽんぽん  - 04/3/23(火) 15:08 -

引用なし
パスワード
   ホントに申し訳ありません。
方法が正しいかどうかわかりませんが、作ったグラフ(X軸は小数点以下
3桁になっているもの)を選択し、マクロの記録をしてみました。

Sub 軸の書式()

  ActiveChart.Axes(xlValue).Select
  Selection.TickLabels.NumberFormatLocal = "0.0_ "
End Sub

上記のように示されました。
このマクロを他のグラフで試してみると、
「実行時エラー438
オブジェクトはこのプロパティまたはメソッドをサポートしていません。」
というエラーが出ます。

【12078】Re:すみません。
発言  こうちゃん E-MAIL  - 04/3/23(火) 15:33 -

引用なし
パスワード
   >ホントに申し訳ありません。
いえいえ^^

>方法が正しいかどうかわかりませんが、作ったグラフ(X軸は小数点以下
>3桁になっているもの)を選択し、マクロの記録をしてみました。
>
>Sub 軸の書式()
>
>  ActiveChart.Axes(xlValue).Select
>  Selection.TickLabels.NumberFormatLocal = "0.0_ "
>End Sub
>
>上記のように示されました。
>このマクロを他のグラフで試してみると、
>「実行時エラー438
>オブジェクトはこのプロパティまたはメソッドをサポートしていません。」
>というエラーが出ます。

>  ActiveChart.Axes(xlValue).Select
>  Selection.TickLabels.NumberFormatLocal = "0.0_ "

ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "
とほぼ等価ですので、MacではVBA上ではこのプロパティは使えないと見たほうがいいかもしれませんね。
他のグラフでエラーになるようですが、マクロ記録したそのまま実行したらどうなります?
また他のグラフで試験するときにはグラフをアクティブにしてるんですよね?

【12079】Re:すみません。
発言  ぽんぽん  - 04/3/23(火) 15:43 -

引用なし
パスワード
   こんにちは。

>>  ActiveChart.Axes(xlValue).Select
>>  Selection.TickLabels.NumberFormatLocal = "0.0_ "
>は
>ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = "0.0_ "
>とほぼ等価ですので、MacではVBA上ではこのプロパティは使えないと見たほうがいいかもしれませんね。

そうですかー なにかとMacでは普通にExcelなどを使っていても不便を感じることが
多いです。

>他のグラフでエラーになるようですが、マクロ記録したそのまま実行したらどうなります?

すみません、「マクロ記録したそのまま実行したらどうなります?」と言う意味が
よくわからないのですが、実際に「マクロ記録」で作ってるときはきちんと
小数点以下1桁になります。
新しく他のグラフで実行にうつすと、エラーが出るといった具合です。

>また他のグラフで試験するときにはグラフをアクティブにしてるんですよね?

はい。そうしています。

【12080】Re:すみません。
発言  こうちゃん E-MAIL  - 04/3/23(火) 16:01 -

引用なし
パスワード
   ぽんぽんさん、こんにちは
>>他のグラフでエラーになるようですが、マクロ記録したそのまま実行したらどうなります?
>
>すみません、「マクロ記録したそのまま実行したらどうなります?」と言う意味が
>よくわからないのですが、実際に「マクロ記録」で作ってるときはきちんと
>小数点以下1桁になります。
>新しく他のグラフで実行にうつすと、エラーが出るといった具合です。

マクロの記録を終了したら、何もせずに(今変更したグラフがアクティブのまま)「ツール」「マクロ」「マクロ」で記録したマクロを実行してもエラーになるか、ということです。
つまり、マクロ記録時はマクロを実行するのではなく、操作をマクロとして記録しています。
その状態のまま、いま登録したマクロの実行で同様のエラーならあきらめるしかないかなということなのですが・・
わかりづらいでしょうか?

【12082】Re:すみません。
お礼  ぽんぽん  - 04/3/23(火) 16:09 -

引用なし
パスワード
   こうちゃんさん、こんにちは。
>マクロの記録を終了したら、何もせずに(今変更したグラフがアクティブのまま)「ツール」「マクロ」「マクロ」で記録したマクロを実行してもエラーになるか、ということです。
>つまり、マクロ記録時はマクロを実行するのではなく、操作をマクロとして記録しています。
>その状態のまま、いま登録したマクロの実行で同様のエラーならあきらめるしかないかなということなのですが・・
>わかりづらいでしょうか?

いえいえ、丁寧にありがとうございます。
やってみましたが、全く同じエラーメッセージが出ました。
この点については、あきらめるしかなさそうですね。
ありがとうございました!

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