[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『切り取り−貼り付け で「値のみ」はできない?』(@出しじゃんけん)
Excel2003 を使っています。Windows は Vista と 7 です。
ある項目に入るデータを他のシートから持ってきて、表に配置するという作業を行っています。
下にアップした図のように、E列に他のシートからの項目をいったん貼り付けておき、 これを表に配置していきます。
配置済みの項目はE列から消したいので、ctrl-X で切り取り、表の必要なところに 貼り付けたいのですが、普通にやると貼り付けもとのデータが罫線のないものなので、 貼り付け先の表の罫線が消えてしまいます。
切り取りではなく ctrl-C でコピーすれば、「値貼り付け」はできて罫線は 崩れないのですが、こうすると E列のデータは残ったままになります。 配置済のものは二重に配置しないように、E列から消したいので、貼り付けた後 削除していくことになります。
つまり
ctrl-X → 貼り付け → 罫線の補修 とするか、
crtl-C → 値貼り付け → 貼り付け元の削除 とするか、
ということになっているのですが、この最後のひと手間を省く方法はないでしょうか。
※Excel は 2010 もインストールしてあるので使えます。2010 ならうまくいく、 ということがあれば、合わせてお願いします。
2010でも、Ctrl/x とやると、貼付の形式を指定することはできないねぇ。 MSが意地悪しているのかな?
(ぶらっと)
>この最後のひと手間を省く方法はないでしょうか。
この気持ち、よくわかります。頻繁にやってると面倒ですよね。 でも、他の方法でも、ひと手間かかるみたいです。 VBAでやるなら、次のようなマクロを個人用マクロブックに書いて、必要なときに走らせたら いかがでしょうか?
切り取りたい範囲をさきに選択しておいて、実行します。
Sub 切取り貼付け()
Dim pastrange As Range Dim copyrange As Range
Application.ScreenUpdating = False Set copyrange = Selection Set pastrange = Sheets("Sheet1").Range("B3") '貼付け先は実際の位置を指定 copyrange.Copy pastrange.PasteSpecial xlPasteValues Application.CutCopyMode = False copyrange.ClearContents Application.ScreenUpdating = True
End Sub
でも貼付け先をその都度指定するのも面倒? 他にいい方法があれば、私も知りたいですね。
(usamiyu)
ExcelのVBA内で、Copy中のセルのアドレスを知る方法 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200910/09100010.txt
Sub test() Dim myRng As String
myRng = GetCopyAddress() myRng = Trim(Mid(myRng, InStrRev(myRng, " ", Len(myRng) - 2) + 1)) myRng = Application.ConvertFormula( _ Formula:=myRng, _ fromReferenceStyle:=xlR1C1, _ toReferenceStyle:=xlA1)
Range(myRng).Copy Selection.PasteSpecial xlPasteValues Range(myRng).ClearContents
End Sub
Dim wsh As Object buf = Empty Sample 'http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1030317680のコード利用です。訂正2013/2/16 18:06何度もごめん With Selection Set wsh = CreateObject("wscript.shell") 'http://officetanaka.net/excel/vba/tips/tips21.htm参考しました If .Application.CutCopyMode <> 2 Or .Count <> 1 Or buf Like "*:*" Then wsh.Popup IIf(buf Like "*:*", "切り取りは一つのセルのみ為 ", IIf(.Count = 1, "切り取りモード以外の為 ", "一つのセルのみ対応の為 ")) & "変化無し", 2, "中止しました", 16 Set wsh = Nothing Exit Sub End If Application.CutCopyMode = False .Value = Range(buf).Value Range(buf).ClearContents End With Set wsh = Nothing End Sub Sub Auto_Open() 'http://officetanaka.net/excel/vba/tips/tips30.htm参考しました With Application.CommandBars("Cell").Controls.Add() .Caption = "切り取り値" .OnAction = "cut" .BeginGroup = False End With End Sub Sub Auto_Close() 'http://officetanaka.net/excel/vba/tips/tips30.htm参考しました Application.CommandBars("Cell").Controls("切り取り値").Delete End Sub 一度保存してもう一度開くと、右クリックでショートカットメニュー”切り取り値”が表示されていると思います。先に切り取りセル”一つのみ”を選択して、次に値のみを付けたいセルを右クリック”切り取り値”を選択ではどうでしょうか こちらも貼り付けるまで操作して手間が掛かると思いますが調べながらちょっと作成しました。 (初)
ショートカットじゃなくてWクリックになるけど、 某知恵袋で見かけたコードが使えそうな。 オリジナルはSelectionChangeなので、お好みで。
yama_ski_11さんの回答 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197237576
シートモジュールに以下を貼り付け。 元のセルをWクリック → 貼り付け先をWクリック 範囲を限定したり、使う時以外はコメントアウトしたら実用出来るのでは? (とおりすがりん♪)
Option Explicit Dim myDat, flg
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If flg = "" Then myDat = Target.Value flg = 1 Selection.ClearContents Else Target.Value = myDat flg = "" End If End Sub
・・・と思ったけど、複数範囲をまとめて移動とかもあるのかな。 UNDOが効かないのもマクロ使うデメリットですね〜
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.