Excel VBA質問箱 IV

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

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


10357 / 13644 ツリー ←次へ | 前へ→

【22214】エラーが出る原因がわかりません まつ君 05/2/11(金) 20:13 質問[未読]
【22217】Re:エラーが出る原因がわかりません kobasan 05/2/12(土) 8:59 回答[未読]
【22237】Re:エラーが出る原因がわかりません まつ君 05/2/12(土) 21:53 質問[未読]
【22239】Re:エラーが出る原因がわかりません kobasan 05/2/12(土) 22:18 回答[未読]
【22242】Re:エラーが出る原因がわかりません kobasan 05/2/12(土) 23:54 回答[未読]
【22255】Re:エラーが出る原因がわかりません まつ君 05/2/13(日) 20:41 質問[未読]
【22257】Re:エラーが出る原因がわかりません kobasan 05/2/13(日) 22:31 発言[未読]
【22284】Re:エラーが出る原因がわかりません kobasan 05/2/14(月) 21:17 回答[未読]
【22316】Re:エラーが出る原因がわかりません まつ君 05/2/15(火) 22:55 お礼[未読]

【22214】エラーが出る原因がわかりません
質問  まつ君 E-MAIL  - 05/2/11(金) 20:13 -

引用なし
パスワード
   SeriesのValuesプロパティが設定できませんとなります
原因が分かりません。
よろしくお願いします。

 A B C D
1 30 1 50 1
2 30 2 50 2
3 30 3 50 3
4 30 4 50 4
5 30 5 50 5

Sub 散布図作成テスト()

a = Range(Cells(1, 1), Cells(5, 1))
b = Range(Cells(1, 2), Cells(5, 2))
c = Range(Cells(1, 3), Cells(5, 3))
d = Range(Cells(1, 4), Cells(5, 4))
  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.ChartArea.Select
  ActiveChart.SeriesCollection(1).XValues = a
  ActiveChart.SeriesCollection(1).Values = b
  ActiveChart.SeriesCollection(2).XValues = c←ここでエラー発生
  ActiveChart.SeriesCollection(2).Values = b
                          
End Sub

【22217】Re:エラーが出る原因がわかりません
回答  kobasan  - 05/2/12(土) 8:59 -

引用なし
パスワード
   ▼まつ君 さん おはようございます。

>SeriesのValuesプロパティが設定できませんとなります
>原因が分かりません。

>  ActiveChart.SeriesCollection(2).XValues = c←

原因は、グラフを一度でも削除して、新しいグラフを表示すると、
グラフにちがう名前 ChartObjects("グラフ ??")が付けられるため
だと思います。

ちなみに、マクロ記録でグラフをセレクトして終了してみて下さい。
ChartObjects("グラフ ??")がどんな状態か分かります。

  ActiveSheet.ChartObjects("グラフ 6").Activate
のようなものが記録されます。

私の力では、ChartObjects("グラフ ??")を初期のものに戻す方法は、
提示できないので、とりあえず、代わりの方法として、
新しいBookを作って、提示されたマクロを貼り付ければ問題なく動くはずです。

【22237】Re:エラーが出る原因がわかりません
質問  まつ君 E-MAIL  - 05/2/12(土) 21:53 -

引用なし
パスワード
   kobasan様
ありがとうございました。
オブジェクトをグラフ名(”グラフ542”)等にしてみましたが
同様にえらーが発生してしまいます。

【22239】Re:エラーが出る原因がわかりません
回答  kobasan  - 05/2/12(土) 22:18 -

引用なし
パスワード
   ▼まつ君 さん 今晩は、
>オブジェクトをグラフ名(”グラフ542”)等にしてみましたが
>同様にえらーが発生してしまいます。


>オブジェクトをグラフ名(”グラフ542”)等にしてみましたが
>同様にえらーが発生してしまいます。

>>新しいBookを作って、提示されたマクロを貼り付ければ問題なく動くはずです。
は試されましたか。

私の場合も、グラフのオブジェクト名を"グラフ6"変えても、エラーは回避でき
ませんでしたが、新しいbookにマクロを貼り付け、グラフを1つ作ってやってみ
た場合、エラーは出ませんでした。

【22242】Re:エラーが出る原因がわかりません
回答  kobasan  - 05/2/12(土) 23:54 -

引用なし
パスワード
   ▼まつ君 さん今晩は

 macro か macro1 のどちらでもできます。試してみて下さい。

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:D5"), PlotBy:=xlColumns

に相当する部分は、付けておいた方が、安定すると思います。

Sub macro()
  a = Range(Cells(1, 1), Cells(5, 1))
  b = Range(Cells(1, 2), Cells(5, 2))
  c = Range(Cells(1, 3), Cells(5, 3))
  d = Range(Cells(1, 4), Cells(5, 4))

  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.ChartArea.Select
  
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:D5"), PlotBy:=xlColumns
  
  ActiveChart.SeriesCollection(1).XValues = a
  ActiveChart.SeriesCollection(1).Values = b
  ActiveChart.SeriesCollection(2).XValues = c
  ActiveChart.SeriesCollection(2).Values = b
End Sub

Sub Macro1()
' Macro1 Macro
' マクロ記録日 : 2005/2/12
  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.ChartArea.Select
'
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:D5"), PlotBy:=xlColumns
'
  ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R1C1:R5C1"
  ActiveChart.SeriesCollection(1).Values = "=Sheet1!R1C2:R5C2"
  ActiveChart.SeriesCollection(2).XValues = "=Sheet1!R1C3:R5C3"
  ActiveChart.SeriesCollection(2).Values = "=Sheet1!R1C4:R5C4"
End Sub

【22255】Re:エラーが出る原因がわかりません
質問  まつ君 E-MAIL  - 05/2/13(日) 20:41 -

引用なし
パスワード
   ありがとうございます。
下記で実施しましたらうまくできましたので
再度、挑戦しましたが、やっぱりエラーがでます
ごめんなさい。再度、ご教授ください。
Sub macro()
  a = Range(Cells(1, 1), Cells(5, 1))
  b = Range(Cells(1, 2), Cells(5, 2))
  c = Range(Cells(1, 3), Cells(5, 3))
  d = Range(Cells(1, 4), Cells(5, 4))

  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.ChartArea.Select
  
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:D5"), PlotBy:=xlColumns
  
  ActiveChart.SeriesCollection(1).XValues = a
  ActiveChart.SeriesCollection(1).Values = b
  ActiveChart.SeriesCollection(2).XValues = c
  ActiveChart.SeriesCollection(2).Values = b
End Sub


Sub 散布図作成()
Dim aRng, bRng, cRng As Range
Dim Hanni As Single
'Q列のデータ入力範囲の行数を数える
Hanni = ActiveSheet.Range("q27", Range("q27").End(xlDown)).Count
With ActiveSheet
Set aRng = .Range("AS27", .Range("P65536").End(xlUp).Offset(Hanni, 31))
Set bRng = .Range("AT27", .Range("P65536").End(xlUp).Offset(Hanni, 32))
Set cRng = .Range("AU27", .Range("P65536").End(xlUp).Offset(Hanni, 33))
End With
  ActiveSheet.ChartObjects(2).Activate
  ActiveChart.ChartArea.Select
  ActiveChart.SetSourceData Source:=ActiveSheet.Range("AS27", Range("P65536").End(xlUp).Offset(Hanni, 33)), PlotBy:=xlColumns
  ActiveChart.SeriesCollection(1).XValues = aRng
  ActiveChart.SeriesCollection(1).Values = bRng
  ActiveChart.SeriesCollection(2).XValues = cRng←ここでエラー
  ActiveChart.SeriesCollection(2).Values = bRng
End Sub

【22257】Re:エラーが出る原因がわかりません
発言  kobasan  - 05/2/13(日) 22:31 -

引用なし
パスワード
   ▼まつ君 さん今晩は

>  ActiveChart.SeriesCollection(2).Values = b

   ActiveChart.SeriesCollection(2).Values = d

に訂正します。

「Q列のデータ入力範囲」と
Range("AS27", Range("P65536").End(xlUp).Offset(Hanni, 33))
からすると、グラフ化するデータ領域が正しく設定されているのかどうか分かりません。
AS27がグラフ化する起点なのは分かりますが、Offset(Hanni, 33)でうまく設定できているか検討して下さい。

MsgBox ActiveSheet.Range("P65536").End(xlUp).Offset(Hanni, 31).Address
MsgBox Hanni

などを、要所に入れてデータがうまくとれているか確認してみて下さい。

それから、大体の「グラフ化するデータ領域」を記載してもらうと分かりやすいです。

【22284】Re:エラーが出る原因がわかりません
回答  kobasan  - 05/2/14(月) 21:17 -

引用なし
パスワード
   ▼まつ君 さん今晩は
>  ActiveChart.SeriesCollection(2).XValues = cRng←ここでエラー

これでうまくできると思います。試してみて下さい。

Sub 散布図3()
Dim aRng As Range, bRng As Range, cRng As Range
Dim Hanni As Single
  'Q列のデータ入力範囲の行数を数える
  LastRow = Range("Q65536").End(xlUp).Row
  Hanni = ActiveSheet.Range(Cells(27, 17), Cells(LastRow, 17)).Count 'q=>>17列
  'Hanni = 0  'とすべきでは???
  With ActiveSheet
    ' p27:t32 にデータがあれば、as27:av32にもデータがあり、
    'グラフ化するデータ領域は、提示通りのHanniなら、as27:av38にあることになります。
    'Hanni=0にすれば、as27:av32ということになります。Hanni = 0 だと思うよ。
    'Hanni=0でつじつまが合います。
    '
    'デバッグのしやすさの関係で、Address(0, 0)を使用しました。
    'AS27をグラフの起点にしたとき、ar列にもQ列のデータをセットして、
    'offsetの31,32,33,34は、29,30,31,32が正しいのでは。
    'グラフのデータ範囲が正しく設定されてないと、エラーは解消しませんよ!!!。
    '
    p31 = .Range("p65536").End(xlUp).Offset(Hanni, 29).Address(0, 0)  '31=>29では
    p32 = .Range("p65536").End(xlUp).Offset(Hanni, 30).Address(0, 0)  '32=>30では
    p33 = .Range("p65536").End(xlUp).Offset(Hanni, 31).Address(0, 0)  '33=>31では
    p34 = .Range("p65536").End(xlUp).Offset(Hanni, 32).Address(0, 0)  '34=>32では
    MsgBox p34
    '
    Set aRng = .Range("AS27:" & p31)
    Set bRng = .Range("AT27:" & p32)
    Set cRng = .Range("AU27:" & p33)
    Set dRng = .Range("AV27:" & p34)
  End With
  '
  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.ChartArea.Select
  ActiveChart.SetSourceData Source:=ActiveSheet.Range("AS27:" & p34), PlotBy:=xlColumns
  ActiveChart.SeriesCollection(1).XValues = aRng
  ActiveChart.SeriesCollection(1).Values = bRng
  
  ActiveChart.SeriesCollection(2).XValues = cRng '←ここでのエラーは解消しています
  ActiveChart.SeriesCollection(2).Values = dRng
  
  'ActiveWindow.Visible = False
  'ActiveCell.Select
End Sub

【22316】Re:エラーが出る原因がわかりません
お礼  まつ君 E-MAIL  - 05/2/15(火) 22:55 -

引用なし
パスワード
   今晩は、kobasan
返事が遅くなり申し訳ありません。
offsetの範囲指定が間違ったいました。
msgboxでアドレスを確認してびっくり・・・
思いこみはいけませんね。
offset量を変えたらすんなり出来ました。
情けない・・・

また、お忙しい中、分かりにくいプログラムから新たに考えて頂き
ありがとうございました。

これからもどうぞよろしくお願いします。

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