[[20060706134818]] 『数式だけコピーしたい』(たんぽぽ) ページの最後に飛ぶ

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

 

『数式だけコピーしたい』(たんぽぽ)
 数式だけA1セルからA2セルにコピーするマクロを教えて下さい。
 数式だけのコピーを、マクロで記録すると

    Range("A1").Select
    Selection.Copy
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

 となりますが、
 例えば、値のコピーなら
 Range("A2").value = Range("A1").value
 とかけるので、
 数式のコピーももっと簡潔になるのではと思っています。

 なお、普通のコピーと同様、式の中で$がついてないものは、
 参照先がずれるようにしたいです。


 Range("A2").FormulaR1C1 = Range("A1").FormulaR1C1
(みやほりん)(-_∂)b


 オートフィルではだめ?
 Range("A1").AutoFill Range("A1:A2")
 (ROUGE)

 (みやほりん)さん、できました〜〜〜  ありがとうございます。
 FormulaR1C1で数式なのですね!

  (ROUGE)さん ありがとうございます。
 AutoFill と言うものが有るのを知りませんでしたので勉強になりました。
 でもこちらだと書式もコピーされてしまうようです。

 すみません。あともう一つ
 書式のみ のコピーも知りたいのですが。

 (たんぽぽ)

 マクロの記録で確認できますが、PasteSpecial でできます。
 (ROUGE)

 (ROUGE)さん、すみません。最初の質問からの流れで
 詳細を記載するのを省略してしまいました。
 マクロの記録では、
    Range("A1").Select
    Selection.Copy
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
 と記録できますが、
 値のコピーが、
 Range("A2").value = Range("A1").value
 数式のコピーが
 Range("A2").FormulaR1C1 = Range("A1").FormulaR1C1
 と、簡単にできるので、
 書式のコピーも このように一行で書けないか知りたかったのです。
 Rangeのプロパティを見てもそれらしきものはみつからなく、
 書式のコピーは無理なのでしょうか。

 (たんぽぽ)


 = はコピーではありません。代入しているだけです。
 (seiya)

 >FormulaR1C1で数式なのですね!
誤解があるといけないので、A1形式での数式はFormulaプロパティです。
Range("A2").Formula = Range("A1").Formula
こちらと結果を比べてくださぁい。
 
書式はプロパティがたくさんあって、一つ一つやっつけるのはタイヘン面倒臭い。
この場合はAutoFillのほうが簡単かも。
Range("A1").AutoFill Destination:=Range("A1:A2"), Type:=xlFillFormats
 
私自身はコピーして内容だけクリアしちゃえっ!っていうのが多い。
Range("A1").Copy Destination:=Range("A2")
Range("A2").ClearContents
 
(みやほりん)(-_∂)b

 (seiya)さんコメントありがとうございます。
 コピーと言う言葉は不適切だったですね。
 値や数式のように
 書式も
 A1の書式をA2の書式に代入できるものがないかを知りたいです。

 (たんぽぽ)


 (みやほりん)さんありがとうございます。
 数式自体は、Formula で
 それをそのままいれると、番号などがずれないのですね。
 ありがとうございます。
 書式はやはりプロパティがたくさんあって、だめなのですね。
 いろいろ案を提供してくださってありがとうございました。
 一つ質問ですが、AutoFill は コピー元とつながってないと使用できないですよね?

 (たんぽぽ)


 たんぽぽさん
 こんな事も出来ますよ

 Dim txt as string
 txt = Range("a1").formula
 range("c1:c100").formula=txt
 (seiya)

 (seiya)さんありがとうございます。
 txtを介して、設定すると、番号がずれていくのですね!
 知らなかったです!勉強になりました。

 (みやほりん)さんの、そのままコピーして値を消すというのも大変参考になりました。
 PasteSpecial を使うと、マクロの処理中にそのセルに選択が移動してしまうのが
 いやだったのですが、コピーして値を消すやり方だと大丈夫ですね。
 ありがとうございました。

 (たんぽぽ)

コメント返信:

[ 一覧(最新更新順) ]


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