• ベストアンサー

Excel の 「形式を選択して貼り付け」、デフォルトで 「値」 に設定可能?

Excel 2000 を使ってます。 ボーダーや背景色のあるセルをコピーする時、 値だけを取り出すために 「形式を選択して貼り付け」 から 「値」 を選択してるのですが、「すべて」 の代わりに 「値」 をデフォルトに設定することは可能でしょうか? また、オプションの設定などで コピーした時に「値」 だけを 取り出すことは可能ですか? あるいは VBA を使った場合はどうでしょう??

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 もし、既存のショートカットに設定したいのでしたら、以下のようにすれば、Ctrl + V で、デフォルトで値貼り付けにはなりますね。 もし、選択肢や一般のコピーをする場合は、メニューの編集-形式を選択してコピーや貼り付けになります。 ただし、この場合、以下のコードは、  Application.OnKey "^%v", "CopyValues" のようにして、Ctrl + Alt + V などと、通常にはない組み合わせにするのが一般的です。 (注意:SetKey, SetOffkeyは、同じキーにさせることです)個人用マクロブックに、同様にすれば、Excelを開いたときに、どれでも同じようになります。 それ以外の設定は、やってみたことはないけれど、デフォルト設定は、かなりややこしいものになるような予感がします。簡単に言うと「形式を選択して貼り付け」ダイアログを途中で横取りするわけです。そのためには、そのダイアログ表示の起動になる部分のインスタンスを設け、既存のものと入れ替えするわけです。それは、可能だとは思いますが、結構、高度な方法であり、設定もかなり面倒になります。私はまったく自信がありません。私自身は、デフォルト以外の方法で慣れてしまうと、他のPCで、ストレスを感じてしまうので、常に、デフォルトに近い状態にして使っています。 '---------------------------------------------- '標準モジュールのみ Sub Auto_Open() 'ブックを開けたら設定  Call SetKey End If Sub SetKey() '設定用  Application.OnKey "^V", "CopyValues" End Sub Sub CopyValues() '値貼り付け  On Error Resume Next  If TypeName(Selection) = "Range" Then   ActiveCell.PasteSpecial xlPasteValues   Application.CutCopyMode = False  End If  On Error GoTo 0 End Sub Sub SetOffkey() '解除用  Application.OnKey "^V" End Sub Sub Auto_Close() 'ブックを締めたら解除  Call SetOffKey End If

その他の回答 (7)

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.8

hirorin00です。 元締めのgooにココに書き込むのは不適当と判断されるかもしれませんが… Wendy02様 ご指導ありがとうございます。 私自身、完全な独学+ネット(古くはフォーラム時代から)からの知識でやってきただけなので、偏りがあったモノと自覚することができました。 大変勉強になりました。ありがとうございます。 以前から貴殿の書き込みを大変興味を持って拝見しておりました。 これからもよろしくお願いいたします。 yasu182様 場所をお借りいたしましてごめんなさい。 でも貴殿のお蔭で、私も更に勉強することができました。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

hirorin00 様へ はじめまして、Wendy02と申します。 ちょっと書き込みを遠慮していましたが、#5 を読みまして、納得しました。personal.xls 強化講座は、有名ですが、この方のコードは、無意味な部分や、書き方としておかしな部分があるので、一通りマクロが知っているのかな?っていう印象です。(失礼なことを書いているかもしれませんが……) 一般的に、デフォルトでバージョンが決まっていないと、CommandBars コレクションに、Index では使えません。また、場合によって、それぞれの設定によって、揺れ動くものですので、名前の指定をしないといけません。Sheets(i) というようなもので、一律に行う以外には、Index のループはできないのです。 CommandBarsControl のような名称が数多くある場合は、必要なら、別途、配列変数で格納します。ただ、Version によって、既存の名前が変わるわけではありませんので、Versionによる 統一コードは可能で、バージョンが変わったから、コードを換えるという必要はありません。 それと、他人の環境では、むやみに、CommandBur に対して、Reset メソッドは使ってはいけないのです。以下のように、自分のつけたもの(つけようとしているもの)に対して削除するようにして、二重登録を防ぎます。多くある場合は、自分専用のTag を付けておき、Tag で削除するようにします。 右クリックメニューに登録する場合は、このようにします。 '標準モジュール Sub Auto_Open Call RightMenuAdd End Sub Sub RightMenuAdd() '右クリックメニュー追加  Dim i As Integer  On Error Resume Next  With Application.CommandBars("CELL")   .FindControl(, 370).Delete   On Error GoTo 0   i = .FindControl(, 755).Index   With .Controls.Add _    (Type:=msoControlButton, ID:=370, Before:=i, Temporary:=True)    .BeginGroup = False    .Caption = "値の張り付け"   End With  End With End Sub '(本来は、With のネストよりも、変数を使ったほうが良いです。) なお、満足されてお使いになっておられているようでしたら、申し訳ありません。お気を悪くしないようにね。

yasu182
質問者

補足

もう一度考えてみたところ、 キーボードの F2 または セルをダブルクリックで 編集可能にしてからマウスで選択して反転、 そこから Ctrl + C を使っても 実用的に使える手間で 値を取り出せるかと思いました。 コピーしたいセルが複数の場合は 教えていただいた 「値の貼り付け」 コマンドが役に立ちそうです。 VBA もうまく設置できました。 そのうち改造して自分でも使ってみようと思います。 色々なアドバイスとても勉強になりました。 ありがとうございました!

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.6

ツールバーに「値を貼り付け」コマンドを追加しておけば、コピーのあと貼り付けるセルを選択してコマンドボタンをクリックするだけで済みます。

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.5

4番です。 先ほどのVBAは下記のページを参考にして工夫したモノです。 書き忘れておりました。失礼いたしました。 http://www.excel7.com/personal/personal4.htm ココはとても参考になります。

参考URL:
http://www.excel7.com/personal/personal4.htm
  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.4

はじめまして 以下のVBAをセットしておくと、右クリックしたときに「値の貼り付け」がでます。 重宝しております。 Option Private Module Sub auto_open() Add_RightClickMenu 1 End Sub Sub Add_RightClickMenu(num%) Dim cstBar As CommandBar Dim i As Long Dim j As Long For j = 23 To 28 Application.CommandBars(j).Reset Set cstBar = CommandBars(j) cstBar_sub cstBar Next End Sub Sub cstBar_sub(cstBar As CommandBar) With cstBar .Controls.Add Type:=msoControlButton, Before:=6, ID:=370, Temporary:=True .Controls(6).Caption = "値の張り付け" ' ID:=370 というのが、値の張り付けを表すID。そのIDのマークが表示され、 ' そのIDの動作が行われる ' Before:=6と.Controls(6)の「6」を変えると表示される場所を変えられます。 End With End Sub

  • masakaji
  • ベストアンサー率33% (38/113)
回答No.2

コピーや貼り付けのとき、 右クリックを使えば、ストレスが少ないのでは? コピーした後、 貼り付けたいセルの先頭の位置を選択して 右クリックしたら、「形式を選択して貼り付け」 が出てくるので、自分はいつもこれで済ませています。

回答No.1

値をデフォルトに設定することはできないと思います。 マクロで設定することは可能でしょうが、[ツール]-[ユーザー設定] の「編集」 コマンド一覧から「値の貼り付け」をツールバーに取り込んだほうが簡単では ないでしょうか。

関連するQ&A

専門家に質問してみよう