• ベストアンサー

VBAを見よう見まねで考えています。

 初めまして、当方全くの素人です。よろしくお願いします。 VBAで”D1へ値だけをコピーする”のは Range("D1").PasteSpecial Paste:=xlValues です。 VBAで”右方向へシフトさせてコピーする”のは Range("D1").Insert shift:=xlShifttoRight であることは解るのですが、”D1へ値だけ右方向へシフトさせてコピーする” のはどのような式になるのでしょうか。解る方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#1の回答について。 [.Value]プロパティは、数式の値を取得するプロパティです。 数式がそのままコピーされることはないと思います。 もし数式をコピーしたいと思ったら[.FormulaLocal]プロパティを使用します。 以下のコードをコピーして実行してみてください。 [Range("D1").PasteSpecial ]は使用しなくてもいいです。 -------------------------------------------------------------- Sub TEST()  'セルD1に「セルを挿入」し「右方向にシフト」させる。  Range("D1").Insert shift:=xlShiftToRight  'セルC1の値を、セルD1に値を入れる。  Range("D1").Value = Range("C1").Value End Sub

kei__2000
質問者

お礼

回答ありがとうございます。この回答でうまくできました。大変助かりました。ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>Range("D1").PasteSpecial Paste:=xlValues です。 それも出来るが、そんなことしません。 >Range("D1")=値の有るセル です。普通圧倒的にセルの値を多くの場合問題にし、値の代入で済むはずです。Copyを使う人は初心者に多い。もちろんCopyを使わないとならない場合もあります。 ーーー >D1へ値だけ右方向へシフトさせてコピーする D1に貼り付けるのではないの?E1に貼り付けたいのになぜD1を話題にするのか? 言っていることの必要性が良くわからない。 ーー http://officetanaka.net/excel/function/tips/tips28.htm 「挿入貼り付け」(の列版)のことか?

kei__2000
質問者

お礼

 回答ありがとうございます。この式は Range("C1").Copy の後に続くものです。C1に入力されている関数式の値をD1へ関数式ではなく、関数式で導き出されている”値”をすでに有る別の値を右方向へシフトさせながらコピーさせていきたいと思い、質問しました。

回答No.1

"D1へ値だけをコピーする"の「コピー」というのは「貼り付け」の意味でよろしいでしょうか。 情報が少ないこともあり、対象はセルD1だけですが、 D1にセルを挿入し、C1の値をD1に表示します。  Range("D1").Insert shift:=xlShiftToRight  Range("D1").Value = Range("C1").Value 意味が違ったり、コピー元が他の場合は、補足してください。

kei__2000
質問者

お礼

 回答ありがとうございます。こちらの説明不足でご迷惑をおかけします。回答いただいた式では確かに右方向へシフトさせてコピーできましたが、実は”D1”には数式が入っているため、これでは数式がそのままコピーされていってしまいます。数式はコピーされず、数式の”値”のみを”右方向へシフトさせてコピーする”方法が解りましたら、よろしくお願いします。

kei__2000
質問者

補足

 すみません、関数式が入っているのはD1ではなくC1です。

関連するQ&A