[[20130211110249]] 『切り取り−貼り付け で「値のみ」はできない?』(@出しじゃんけん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『切り取り−貼り付け で「値のみ」はできない?』(@出しじゃんけん)

 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

マナさんと同様のことですがhttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1030317680を使用した例で、標準モジュールに↑回答されているコードを入力し、その、Dim buf As Stringを’Dim buf As Stringとして
モジュールレベルの変数にPrivate buf As String
本当はFunctionと、して使ったほうが良いと思いますが、試しに、標準モジュールに↓
Sub cut() '切り取りモード_アクティブシートのみ対応

    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.