Excel VBA質問箱 IV

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

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


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

【32671】別シートの値を参照したグラフを作成したい カテキン 05/12/20(火) 17:32 質問[未読]
【32675】Re:別シートの値を参照したグラフを作成し... Kein 05/12/20(火) 17:52 回答[未読]
【32717】Re:別シートの値を参照したグラフを作成し... カテキン 05/12/21(水) 11:02 発言[未読]
【32726】Re:別シートの値を参照したグラフを作成し... Kein 05/12/21(水) 12:42 回答[未読]
【32740】Re:別シートの値を参照したグラフを作成し... カテキン 05/12/21(水) 14:42 お礼[未読]

【32671】別シートの値を参照したグラフを作成した...
質問  カテキン  - 05/12/20(火) 17:32 -

引用なし
パスワード
   はじめまして。
宜しくお願いします。

今やりたいことは、
『シートAに作成したボタンを押下
  →シートBのA1〜A7の値を参照したグラフがシートAに作成される』
ということなのですが、
別シートの連続した複数セルの参照を、どうしてもうまく行うことができません。

例えば、シートBから、シートAのA1〜A7セルの数値の合計を出そうとして

  Range("A20") = Application.WorksheetFunction. _
      Sum(Range(Worksheets(シートA).Range("CashFlow1"), _
           Worksheets(シートA).Range("CashFlow7")))

このようなコードを実行すると、

実行時エラー'1004':
'Range'メソッドは失敗しました:'_Worksheet'オブジェクト

というエラーが出てしまいます。
ちなみにセル一つだけの参照ならばうまくいきます。
どこかおかしい点があったら教えていただけないでしょうか。
宜しくお願いします!

【32675】Re:別シートの値を参照したグラフを作成...
回答  Kein  - 05/12/20(火) 17:52 -

引用なし
パスワード
   With Worksheets(シートA)
  Range("A20").Value = WorksheetFunction _
  .Sum(.Range("CashFlow1"), .Range("CashFlow7"))
End With

で、どうかな ? ちなみに
>シートA
は、文字列型変数ですよね ?

【32717】Re:別シートの値を参照したグラフを作成...
発言  カテキン  - 05/12/21(水) 11:02 -

引用なし
パスワード
   Keinさん、早速のご回答いただきありがとうございました!

早速やってみたところ、CashFlow1とCashFlow7の加算はできたのですが、
その間にある、CashFlow2,CashFlow3,CashFlow4,CashFlow5,CashFlow6
のセルの値は加算されませんでした。

そこで、7連続のセル(CashFlow1〜CashFlow7)を加算するために
一部分以下のように変更したのですが、やはり同じエラーが出てしまいます。

  With Worksheets(shname)
    Range("A20").Value = WorksheetFunction _
    .Sum(Range(.Range("CashFlow1"), .Range("CashFlow7")))
  End With

Range(.Range("CashFlow1"), .Range("CashFlow7"))

他のシートを参照する際には、このような記述はおかしいのでしょうか?

>で、どうかな ? ちなみに
>>シートA
>は、文字列型変数ですよね ?

おっしゃるとおり、文字列型変数です。

【32726】Re:別シートの値を参照したグラフを作成...
回答  Kein  - 05/12/21(水) 12:42 -

引用なし
パスワード
   >その間にある、CashFlow2,CashFlow3,CashFlow4,CashFlow5,CashFlow6
>のセルの値は加算されませんでした。
あー・・連続した名前つきセル範囲だったのですね。それなら

With Worksheets(shname)
  Range("A20").Value = WorksheetFunction _
  .Sum(Union(.Range("CashFlow1"), .Range("CashFlow2"), _
  .Range("CashFlow3"), .Range("CashFlow4"), .Range("CashFlow5"), _
  .Range("CashFlow6"), .Range("CashFlow7")))
End With

で、良いでしょう。
>このような記述はおかしいのでしょうか?
おかしくはありませんが、Unionメソッドを使うのが一般的かと思います。

【32740】Re:別シートの値を参照したグラフを作成...
お礼  カテキン  - 05/12/21(水) 14:42 -

引用なし
パスワード
   Keinさん
またまたのお返事ありがとうございます!

教えていただいたとおり、Unionを使用したところ、
連続したセル範囲を参照することができました。

また、自分でも試行錯誤したところ、
次のような方法でも別シートの連続したセル範囲を参照できることが
わかりました。

Worksheet(シートA).Range("CashFlow1:CashFlow7")

------
今回はお返事をいただきほんとうに助かりました。
ありがとうございました!

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