[[20140920111922]] 『表に他セルからの値をコピペしたい』(やま) ページの最後に飛ぶ

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

 

『表に他セルからの値をコピペしたい』(やま)

 ◎ 下記表(セルの枠のみ表示)に、他セルに有る表(元の表と枠組みは同じ)から
 データ(数字)を貼り付けた表です。
 ◎ 現在、最初の表では成功していますが、2個目と3個目までの表が有ります。

 11	21	31	41
 12	22	32	42
 13	23	33	43
 14		34	44 → 空白セル=セルの結合あり(/を表示中)
 15		35	45
 65	66	165	215 → 解答欄 (白色文字にして、見えなくしている。)
              → ここには、上記解答との「◎ ×の判定書式あり	

 ◎ この問題部分(B6:E10)を下段の表 B35:E39にコピペは「成功」です。
 ただし、解答と判定セルの B11:E12セルは外してコピーして貼り付ければの話です。

Sub 問題の呼出し()

 Range("B6:E10").Copy Destination:=Range("B35:E39")

End Sub

 次の問題が発生中です。

 ◎ 同じような表があと2個有ります。それぞれ「問題」の下行には解答と判定セル
 が有りますので、一気にB6:E31を選択して、B35:E60 としますと、解答、判定をも取得
 してしまいますので、問題の部分のみを選択して、下記コードでは

 Range("B6:E10,B15:E19,B25:E29").Copy Destination:=Range 
 ("B35:E39,B44:E48,B54:E58") としたら、エラーとなりました。

 ◎ 複数の表を選択するのが分かりません?

 ◎ なお、最終的には、C3セル=ここに回数を入力すると、各表(回数表示有り)の
 回数を取得して「当該問題を呼び出して貼り付ける」作業にしたいのです。

 ◎ 今までは、Excelの数式で呼び出しで作業をしていましたが、6回分以上数式を入れ
 ると無理な状況です。そこでVBAは初心者で参考書片手の作業ですが、良い方法をご教 
 授ください。

< 使用 Excel:Excel2003、使用 OS:WindowsXP >


 ◎ 列指定と行指定でやってみた結果です。

 Sub 問題の呼出し()				
 Range("B:E").Copy Destination:=Range("B:E")				
 Range("6:10").Copy Destination:=Range("35:39")				
 Range("15:19").Copy Destination:=Range("44:48")				
 Range("25:29").Copy Destination:=Range("54:58")				

End Sub

 ◎ これで いけそうです!

 ◎なので「最終的にの方法」の件になりますが、「回数」指定セルに入力した回数の表を貼り付けるには?
 ◎ 呼び出された表 (3個 で1回分)です。C3セルの値が、別表から呼び出して表示したい回数です。
 A35セルには、別表1回の「1」の表示が有ります。C3=A35 この状況で、1回(3個の表の値)を貼り付け
 たいのですが、よろしくお願いします。 

(やま) 2014/09/20(土) 16:48


 やっていることを理解できているでしょうか。

 Range("B:E").Copy Destination:=Range("B:E")
 は自分自身にコピーをしているので、実質なにも変化していません。

 Range("6:10").Copy Destination:=Range("35:39")	
 は 6:10 行を 35:39 行に行ごとコピーしています。

 ですので、これで問題なければよいですが、B:E列の範囲だけコピーしたいのであれば、
 Range("B6:E10").Copy Destination:=Range("B35:E39")	
 とする必要があります。

 セルの指定方法をもう一度確認してみてください。
 どうでも良い話ですが、他の引数を使用しなければ、Destination:= はなくとも
 意味が分かりずらいことはないので、省略しても構いません。

 ある値に応じて、コピー場所を変えたい場合、規則性があればセルを式で指定もできますが
 規則性が無ければ、 Select Case で値ごとに処理を書くことになります。

 A1 に応じてコピー範囲を変える例です。
 Sub Sample()
     Select Case Range("A1").Value
       Case 1 : Range("B6:E10").Copy Range("B35:E39")	
       Case 2 : Range("B15:E19").Copy Range("B35:E39")	
       Case 3 : Range("B25:E29").Copy Range("B35:E39")	
     End Select
 End Sub
(Mook) 2014/09/20(土) 18:14

 (Mook)さん 2014/09/20(土) 18:14

 ◎ 何時も早々の、ご教授ありがとうございます。

 > Range("B:E").Copy Destination:=Range("B:E")
 は自分自身にコピーをしているので、実質なにも変化していません。

 ◎ 何をやってんでしょうね! 行コピーで、支障はありませんでしたが、シンプルな記述に変更しました。
 コピー範囲の変更も理解できました。

 これは、質問用に作成したパターンですので、実際に使用したいのを別途質問させて頂きますので
 その節は、よろしくお願いします。
(やま) 2014/09/21(日) 14:12

コメント返信:

[ 一覧(最新更新順) ]


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