2010年3月21日日曜日

第138回目 複数個所を一箇所にコピーする(その2)

○第138回目 複数個所を一箇所にコピーする(その2)

 今回は指定された範囲のデータを貼付けるという処理です。
 場所の3情報(プラス、それぞれの場所の列数と場所の数)はすでにパブリック変数にあります。
 今回の眼目はコピー・ペーストの繰り返しです。
 コピーもとの場所は独立していますが、貼付け先の場所は順次移動していきます。データ、一列あき、データ、一列あき…という形式で貼付けましょう。
 今回のマクロの実行前には、貼付ける先の座標にカーソルがあるという前提です。
 貼付先の座標は、"コピーもとの列数+1"で移動していきますので、ちょっと気をつけてください。
 貼付け処理のメイン部分は次のようになります。
mm = 0
'貼付け処理
For i = 1 To p_m_cnt
Windows(p_m_bkname(i)).Activate
Sheets(p_m_shname(i)).Select
Range(p_m_xy(i)).Copy
Windows(bkname9).Activate
Sheets(shname9).Select
Cells(gyo1, retu1 + mm).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
mm = mm + p_r_cnt(i) + 1 '間に一列あけるため
Next
 貼付けた後の印刷は、すでにできている"範囲印刷"となります。

 前に、"計算式の中にある場所に飛ぶ"というのがありました(場所とは計算式の中に記述されている座標ということです)。
 これに合体させることを考えるのがいいと思います。
 場所に飛んでいったら、その周囲のデータを取得するかどうか、取得する場合はその範囲の座標を指定します。
 情報が得られたら、今回の貼付けマクロです。
 これでデバックがやりやすくなること請け合いです。

0 件のコメント: