- ベストアンサー
エクセル・セルの値のみをコピーすることについて
セルの値のみをコピーするには、「形式を選択して貼り付け」の「値」を選ぶことで可能なことはわかります。 しかし、値が貼りついた後にEnterキーを押すとその値がすべてをコピーしたように変わってしまいます。 例えば、元のセルに関数があればその関数もコピーされてしまいます。 Enterキーではなく、Escキーを押すと問題なく値のみが貼りつきます。 この現象を設定等を変えることによって、Enterキーを押しても値のみを貼りつけるようにすることは可能でしょうか? エクセル2000、2003、2007でも同様の現象がおきます。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
コピーコマンドを掛けるとセル内の「すべて」がWindowsの 領域のクリップボードに積み込まれます。 「貼り付け」をすればその「すべて」が貼り付きます。 コピー元が点滅しているのは、まだクリップボードにあるという事なので、 何回でも貼り付けられます。 クリップボードから消去するにはEscを押さなければなりません。 次のデータを「コピー」すると内容が積み変わります。 「貼り付け」の代わりにエンターを押すと、「貼り付け」と同時にEscを 押したのと同じになります。 「形式を選択して貼り付け」を開くと、「すべて」になっていますが、 これは通常の「貼り付け」と同じ事です。 「値」や「書式」など選択するとセル内の、指定した情報だけを貼り付けることができます。 ところが、折角指定して貼り付けたのに、エンターを押すという事は「すべて」を 貼り付けてしまうのです。 ですから、終わるときはEscを使う訳です。 「コピー」コマンドを掛けるときに、内容を指定してクリップボードに 積み込めれば楽なのでしょうが、それはできないのです。
その他の回答 (7)
- Wendy02
- ベストアンサー率57% (3570/6232)
>>アセンブラ等の知識が必要ですが、できますか?) >はい、できます。 Excelを逆アセンブラするという意味でしょうか。それはいくらなんでも、それが出来れば、私などは、もうVBAはとうに離れていますね。少しはアセンブラというか、昔は、フリーソフトのコンパイラーもあったので、やったことはありますが、今は、過去の思い出として本棚に本を飾っているだけです。 Win32 APIというものもあるけれども、そういうダイレクトな質問がでれば、回答もついたかと思いますが、それも微妙な内容の気がします。 もちろん、どのキーを押したかという記録は取れますが、通常、貼り付けなら[貼り付け]というコマンドに対して、貼り付けをするわけで、その時に、ユーザーは、値貼り付けにするのか、すべてを貼り付けるか、選択するわけですから、値貼り付けにする時に、Application.CutCopyMode = False を送ってあげればすればよいと思います。簡単な話だと思います。 >「コピー」コマンドを掛けるときに、内容を指定してクリップボードに積み込めれば それは、Office に儲けられているClipBoard オブジェクトに入れれば、テキストしか入りませんから可能ですが、ふつうは、コピーした後に、吐き出す時に区分けします。 (1) 一般的には、「値の貼り付け」なら、コマンドボタンがありますから、ユーザー設定から探し出して、ツールバーの上にドラッグして貼りつけてあげます。 (2)VBAでショートカットを置けば、値貼り付けが実現しますね。 例えば、Ctrl + Shift + V とか分けてあげればよいです。 Sub Auto_Open() Call SetKey End Sub Sub SetKey() Application.OnKey "^+v", "myPastePr" 'Ctrl+Shift+v End Sub Private Sub myPastePr() If Application.CutCopyMode Then Selection.PasteSpecial xlPasteValues Application.CutCopyMode = False End If End Sub (3) 既存のひとつのブックに対してなら、こうすれば、Esc を押したのと同じになります。しかし、これは、値貼り付けでなくても、同じようになってしまいます。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Application.CutCopyMode = False End Sub すべてのブックに搭載するなら、PERSONAL.XLS(b)で、Class でインスタンスを設けます。 私個人は、(1)の値の貼り付けボタンをツールバーに貼り付けていますが、右クリックメニュー("Cell") にも、独自に入れています。 Win32API の IsClipboardFormatAvailableで、内容を確認して、貼り付けを区分けしています。
お礼
ご回答ありがとうございます。 勉強してみます。
- rolly-ys
- ベストアンサー率43% (25/57)
>コピー元のセルが点滅するのを消すために、通常どうしているのですか? Escキーを押せばよいです。 Enterを押すのは、貼り付け後下のセルに自動移動させるためですか。 それならEscキーを押したあと、Enterですね。
お礼
度々のご回答ありがとうございます。 >Enterを押すのは、貼り付け後下のセルに自動移動させるためですか。 ただ、Enterキーは大きいので押しやすかったからです。
- tohru999
- ベストアンサー率49% (76/154)
No4のTohru999です。 詳しい解説はNo5のinu-cyanさんが答えてくれていますので、略ということで... もし改造という方法を選択するならば、ライセンスの問題はありますが、がんばればできるでしょう。 簡単に書いておくと、 エクセルに送られるWindowMessageをフックして、 エクセルでコピー状態の場合に、Enterキーが押されたかどうかを判定。 その時にエクセルの選択されているセルに値のみを貼り付ける。 という処理をすればできると思います。 アセンブラとWindowsの仕組み(WindowMessage等)が理解できていれば、できるでしょうが 個人的には、そこまでしてやる事ではないと思います。 以上、余談でした。
お礼
ありがとうございます。 頑張ってみます。
- tohru999
- ベストアンサー率49% (76/154)
他の方が回答しているように、エクセルの仕様です。 これを変えるにはマイクロソフトに「仕様を変えて下さい」と、お願いするしかありません。 (あ~そうですか。とかで聞き流されるぐらいだと思いますが) また、No2さんへのお礼に、「誰かはEnterキーを押しています」と書いていますが、 そういった仕様なので、誰もEnterキーを押して値のみをコピーできません。 (エクセルを改造すればできますが、そこまでしないorできないです) それとも、頑張って改造してみますか? (アセンブラ等の知識が必要ですが、できますか?)
お礼
>アセンブラ等の知識が必要ですが、できますか?) はい、できます。
補足
>また、No2さんへのお礼に、「誰かはEnterキーを押しています」と書いています>が、 >そういった仕様なので、誰もEnterキーを押して値のみをコピーできません。 私が言いたいのは、私のようにエンタキーを押して、疑問に思っている人は他にもいるということです。
- rolly-ys
- ベストアンサー率43% (25/57)
貼り付け後何故Enterするのでしょうか。 値の貼り付け後も、コピーモードが生きています(コピー元のセルがチカチカしている)よね。 この状態でEnterするということはもう一度同じ場所に全てのコピーをすることになります。 通常の全て貼り付けの時も、貼り付けボタンの代わりに、Enterでも貼り付けが出来るのです。
お礼
コピー元のセルが点滅するのを消すために、通常どうしているのですか?
- merlionXX
- ベストアンサー率48% (1930/4007)
> しかし、値が貼りついた後にEnterキーを押すとその値がすべてをコピーしたように変わってしまいます。 そのような仕様です。 だから「値貼付け」の際は誰もEnterキーを押しません。
お礼
>だから「値貼付け」の際は誰もEnterキーを押しません。 コピー元のセルが点滅するのを消すためにエンターキーを押してます。 誰かはEnterキーを押しています。
- violet430
- ベストアンサー率36% (27472/75001)
どの様な手順でhりつけているのですか? こちらではメニューから操作しますが、全てマウス操作で貼り付けできますので、enterキーなど使ったことが有りませんが。
お礼
コピー元のセルが点滅するのを消すためにエンターキーを押してます。
お礼
詳しいご解説ありがとうございます。 よく理解できました。