[[20100131232231]] 『行挿入した際に指定した行をコピペするには』(まや) ページの最後に飛ぶ

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

 

『行挿入した際に指定した行をコピペするには』(まや)

エクセル初心者で恐縮ですがお願い致します。

現在コマンドボタン?をクリックすると行挿入が行われるようになっています。

行挿入した際に指定行(例えば計算式がいくつか入っている9行目)を自動的にコピーしたいのですが、どうしたらいいのでしょうか??

このサイトの[[20070227164826]]が近い感じでした。

どなたか教えてください。よろしくお願いいたします。


 9行目をコピー、挿入した行に
・形式を選択して貼付>書式
・形式を選択して貼付>数式
という作業を行うコードを追加してはいかがですか?
 
現在お使いのマクロを公開していただければ、具体的なアドバイスが
できると思います。
 (みやほりん)(-_∂)b


みやほりん様

ご返信ありがとうございます。

形式を選択して貼付>書式
形式を選択して貼付>数式
という作業を行うコードを追加できればいいんですが、
すみません。方法がわからなくて・・・

現在はこれで行挿入してます。自動で行番号がつく
ようになっているのかと思います。

  Selection.EntireRow.Insert

    ActiveCell.Offset(0, -1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=row()-8"
    ActiveCell.Offset(0, 7).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
    ActiveCell.Offset(0, 6).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
    ActiveCell.Offset(0, -12).Range("A1").Select
End Sub

上記に追加でみやほりん様考案の[[20070227164826]]の一番上のやり方
(行挿入した場合のオプション的な)で問題なく作動したのですが、使い勝手
の問題で少し変えれたらと思った次第です。

というのは、9行目以降の行にすべて同じ数式が入っているのですが、数式に
よって数字が入る場合と数式を消して直接数字を打ち込む場合があり、後者
の直接入力する場合だと、挿入行に数式が無いままにコピーされてしまった
からです。

よって9行目は何も記入しないとした前提で9行目全体をコピーできれば良い
のかなと思ったのです。

または、みやほりん様考案のやり方で1つ上の行(数式)のコピーではなく
9行目(数式)をコピーできればいいのかと思っております。

ご教示頂ければ幸いです。よろしくお願い致します。

(まや)


 マクロの記録で
「14行目を選択して行挿入する、9行目をコピーする、14行目を選択して
数式と書式を貼り付ける」という動作の記録をとると次のようになります。
    Rows("14:14").Select
    Selection.Insert Shift:=xlDown
    Rows("9:9").Select
    Selection.Copy
    Rows("14:14").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
 
整理すると
    Rows("14:14").Insert Shift:=xlDown
    Rows("9:9").Copy
    Rows("14:14").PasteSpecial Paste:=xlPasteFormulas
    Rows("14:14").PasteSpecial Paste:=xlPasteFormats
 
こうなります。行挿入、コピーするのにSelectはしなくてもよいですし、
貼り付ける行が11行目と決まっていれば、14行目を選択する必要はありませんので、
Selectメソッド、Selectionキーワードは必要ありません。
ここで、処理したいのは14行目ではなくて、Selection.EntireRowですから、
これを置き換えます。
 
    Selection.EntireRow.Insert Shift:=xlDown
    Rows("9:9").Copy
    Selection.EntireRow.PasteSpecial Paste:=xlPasteFormulas
    Selection.EntireRow.PasteSpecial Paste:=xlPasteFormats
 
このような感じで作ります。完成形はこちら。
 
    With Selection.EntireRow
        .Insert Shift:=xlDown
        Rows("9:9").Copy
        .PasteSpecial Paste:=xlPasteFormulas
        .PasteSpecial Paste:=xlPasteFormats
    End With
    Application.CutCopyMode = False
 
(みやほりん)(-_∂)b


みやほりん様

ありがとうございます。

使い方としては、完成形のものを新しいマクロで保存する形でよいのでしょうか?

上記の場合で試したら、スムーズに行挿入+コピーが出来ていましたが、中にはコピーできていない列がありました。
数式(書式)は、全て=から始まってますが、何か条件があるのですかね。

素人考えですが、条件があるのであれば、9行目(例えばA列からAA列まで)のコピーを丸々張り付け
の方が単純だったりするんでしょうか?

重ね重ねすみませんが、お教え頂ければ幸いです。

(まや)


 >使い方としては、完成形のものを新しいマクロで保存する形でよいのでしょうか? 
「現在はこれで行挿入してます。」で提示されているマクロの
代替として提案しています。
 
>中にはコピーできていない列がありました。
ありえません。
もしそのような現象が起こるのでしたら、そのコピーできていない
数式を教えてください。
 
>単純だったりするんでしょうか? 
私が提案したコードは決して複雑ではありません。
事情を複雑にしているのは、
>数式によって数字が入る場合と数式を消して直接数字を打ち込む場合があり、
このような使い方をしているためです。
(みやほりん)(-_∂)b

みやほりん様

何度も丁寧にご説明頂きありがとうございます。

すみません。代替としてやってみたらできました!!

本当にありがとうございました。

(まや)


コメント返信:

[ 一覧(最新更新順) ]


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