• ベストアンサー

新たに作成したシートでunion関数が使えないのですが。

困っています 例えば Option Explicit Sub sss() Dim allrange As Range Dim cell As Range Set allrange = Union(Range("A1"), Range("A3")) For Each cell In allrange cell = 123 Next cell End Sub '---------------------------------------------------------- Sub ssscr() Dim exlapp As Excel.Application Dim exlwb As Object Dim exlsh As Object Set exlapp = CreateObject("Excel.Application") exlapp.Visible = True Set exlwb = exlapp.Workbooks.Add Set exlsh = exlwb.Worksheets(1) Dim allrange As Range Dim cell As Range Dim rngA1 As Range Dim rngA3 As Range Set rngA1 = exlsh.Range("A1") Set rngA3 = exlsh.Range("A3") Set allrange = Union(rngA1, rngA3) For Each cell In allrange cell = 123 Next cell End Sub 最初のコードだとA1,A3に値が入力されるんですけど 二番目のコードだと新たに出来きたbookに入力されません。 unionのところでエラー起こります。 作成したブックのシートをセレクトしても入力できません。 作成したブックにunion関数を指定したときどうしたらよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

>そのレンジはクリエイトしたブックのじゃなくてマクロを実行したときに >アクティブなってるブックを参考にしてるようですT T 両方のブックに書くと、以下のようになるようです。 どちらが、質問者のアクティブブックか、知りませんが 自分が123を残したい、ブック側を残し、他を削ればいいです。 Dim exlapp As Excel.Application Dim exlwb As Object Dim exlsh As Object Set exlapp = CreateObject("Excel.Application") exlapp.Visible = True Set exlwb = exlapp.Workbooks.Add Set exlsh = exlwb.Worksheets(1) Dim allrange As Range Dim cell As Range Dim rngA1 As Range Dim rngA3 As Range Set rngA1 = exlsh.Range("A1") Set rngA3 = exlsh.Range("A3") '新規作成したブック側 Set allrange = exlapp.Union(rngA1, rngA3) For Each cell In allrange cell = 123 Next cell '既存のブック側 Set rngA1 = Range("A1") Set rngA3 = Range("A3") Set allrange = Union(rngA1, rngA3) For Each cell In allrange cell = 123 Next cell

koara1982
質問者

お礼

どうもありがとうございました。 createobjectしたbookでunion関数を使うときはunion関数の頭に アプリケーション名をつけなきゃいけないようですね。

その他の回答 (2)

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

>>参考にしてるようです<<  どのように確認しましたか? Excel2002 ,2007で確認しましたが tom11さんの記述で問題なく 作成されたほうのセルに値が入ります。 ヘルプをみても Application.Union(range1,range2, ... )となっていますから それでいいはずです。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

Set allrange = exlapp.Union(rngA1, rngA3) これで、エラーは起きないみたいですよ。

koara1982
質問者

補足

エラーは起きないですが、 そのレンジはクリエイトしたブックのじゃなくてマクロを実行したときにアクティブなってるブックを参考にしてるようですT T

関連するQ&A

専門家に質問してみよう