[[20041124113752]] 『各シートごと選択されているセル範囲の格納』(kaze) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『各シートごと選択されているセル範囲の格納』(kaze)

[各シートごとの選択されているセル範囲の格納について]

いつもお世話になってます。
一ブック内にAシートとBシートがあった場合、

@Bシートの任意のセル範囲を選択しておく。
AAシートを選択してAシートの任意のセル範囲を選択しておく。
BAシートのC列をコピー
CBシートを選択してC列にBでコピーした列をコピーする。
D再度、Bシートの任意のセル範囲を選択する。
E再度、Aシートの任意のセル範囲を選択する。

ということをやるにはどうすればよいでしょうか?
BでAシートを選択した時点での選択セル情報は RANGEオブジェクト = SELECTION で
保持できるのですが、
CでBシートを選択した時点で、@で選択されているセルの選択セル情報を

  RANGEオブジェクト = SELECTION で保持しようとするとエラーになります。

どうすれば各シートごとに選択されている範囲を格納することが出来るのでしょうか?

どなたか知っていられましたらご教授ください。


 Rangeの前にシートを指定してはどうでしょうか。
 WorkSheets("Sheet1").Range("A1:A50").Copyなどです。

 格納するってことは、こんな感じかな・・・。
Sub Test()
 Set MyRange1 = Worksheets("Sheet1").Range("A1:A50")
 Set MyRange2 = Worksheets("Sheet2").Range("A2")
 MyRange1.Copy Destination:=MyRange2
 Set MyRange1 = Nothing
 Set MyRange2 = Nothing
End Sub
 セットしたら開放ってManちゃんに怒られるので追加(;^_^A アセアセ
 (川野鮎太郎)


 (3)(4)は次の一行でコピー元、貼付先を選択せずに実行できます。
Worksheets("Aシート").Range("C:C").Copy Destination:=Worksheets("Bシート").Range("C:C")
 
シートごとに選択範囲を保持するには・・・
鮎太郎さんに書いていただいたので割愛。
ただ、質問での説明では「任意のセル範囲選択」と
「C列のコピー貼付」の関連が私には見えません。
上記の一文でことはすむような気がします。
(コピー範囲をいったんセレクトした結果、変更された
選択範囲を元に戻したい、との相談と推測)
(みやほりん)


Sub Test()
 Set MyRange1 = Worksheets("Sheet1").Range("A1:A50")
 Set MyRange2 = Worksheets("Sheet2").Range("A2")
 MyRange1.Copy Destination:=MyRange2
 Set MyRange1 = Nothing
 Set MyRange2 = Nothing
End Sub


川野さん、みやほりんさんご回答ありがとうございました。
これを受けまして2点ほど質問が御座います。

>川野さん
上記では
Worksheets("Sheet1").Range("A1:A50")
Worksheets("Sheet2").Range("A2")
とセル範囲を固定で指定していますが
シートごとに現在範囲選択されているセル範囲を格納するにはどうすればよいでしょうか?

>みやほりんさん
Worksheets("Aシート").Range("C:C").Copy Destination:=Worksheets("Bシート").Range("C:C")

というステートメントを記述したら"Bシート"に保護がかけているのでエラーになってしまいました。
(Worksheets("Bシート").Protect(UserInterfaceOnly:=True))で保護をかけています。

保護がかかっている状態で
Worksheets("Aシート").Range("C:C").Copy Destination:=Worksheets("Bシート").Range("C:C")
のステートメントを実行することは出来ないでしょうか?

ご回答の方宜しくお願いいたします。


 あらら、保護がかかっているとDestinationはだめですね。
【方法1】
C列の値だけであれば
Worksheets("Bシート").Range("C:C").Value = Worksheets("Aシート").Range("C:C").Value
【方法2】
コピーの直前にWorksheets("Bシート").Unprotectで保護解除、直後に
Worksheets("Bシート").Protect UserInterfaceOnly:=True
(みやほりん)


 回答ありがとうございます。
 みやほりんさんご提示の【方法1】を用いたらできました。
  ありがとうございました。
 (kaze)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.