- ベストアンサー
VBAを見よう見まねで考えています。
初めまして、当方全くの素人です。よろしくお願いします。 VBAで”D1へ値だけをコピーする”のは Range("D1").PasteSpecial Paste:=xlValues です。 VBAで”右方向へシフトさせてコピーする”のは Range("D1").Insert shift:=xlShifttoRight であることは解るのですが、”D1へ値だけ右方向へシフトさせてコピーする” のはどのような式になるのでしょうか。解る方、よろしくお願いします。
- みんなの回答 (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
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>Range("D1").PasteSpecial Paste:=xlValues です。 それも出来るが、そんなことしません。 >Range("D1")=値の有るセル です。普通圧倒的にセルの値を多くの場合問題にし、値の代入で済むはずです。Copyを使う人は初心者に多い。もちろんCopyを使わないとならない場合もあります。 ーーー >D1へ値だけ右方向へシフトさせてコピーする D1に貼り付けるのではないの?E1に貼り付けたいのになぜD1を話題にするのか? 言っていることの必要性が良くわからない。 ーー http://officetanaka.net/excel/function/tips/tips28.htm 「挿入貼り付け」(の列版)のことか?
お礼
回答ありがとうございます。この式は Range("C1").Copy の後に続くものです。C1に入力されている関数式の値をD1へ関数式ではなく、関数式で導き出されている”値”をすでに有る別の値を右方向へシフトさせながらコピーさせていきたいと思い、質問しました。
- Daiki_PaPa
- ベストアンサー率55% (11/20)
"D1へ値だけをコピーする"の「コピー」というのは「貼り付け」の意味でよろしいでしょうか。 情報が少ないこともあり、対象はセルD1だけですが、 D1にセルを挿入し、C1の値をD1に表示します。 Range("D1").Insert shift:=xlShiftToRight Range("D1").Value = Range("C1").Value 意味が違ったり、コピー元が他の場合は、補足してください。
お礼
回答ありがとうございます。こちらの説明不足でご迷惑をおかけします。回答いただいた式では確かに右方向へシフトさせてコピーできましたが、実は”D1”には数式が入っているため、これでは数式がそのままコピーされていってしまいます。数式はコピーされず、数式の”値”のみを”右方向へシフトさせてコピーする”方法が解りましたら、よろしくお願いします。
補足
すみません、関数式が入っているのはD1ではなくC1です。
お礼
回答ありがとうございます。この回答でうまくできました。大変助かりました。ありがとうございます。