• ベストアンサー

Excel VBA コピーと貼り付け

1回目にクリックしたセルの値と書式を2回目にクリックしたセルに貼り付ける作業を 「Inputbox」を使わずに行うことは可能でしょうか。可能でしたらその方法を教えてください。 (「Inputbox」はセルをクリックした後に「ok」ボタンをクリックする手間があるため。)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける Dim h As Range Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  If h Is Nothing Then   Set h = Target   Target.Copy  Else   Target.Value = h.Value   h.Copy   Target.PasteSpecial Paste:=xlPasteFormats   Set h = Nothing   Application.CutCopyMode = False  End If  Cancel = True End Sub ファイルメニューから終了してエクセルに戻る 使い方: 1.コピー元のセルをWクリックする   印としてWクリックしたセルがコピーされる (実際の作業には使っていないので、コピーをキャンセルしても構わない) 2.貼り付け先のセルでWクリックする #参考 よく寄せられるご相談の一種ですが、「セルを(シングル)クリックでどうこうする」というのをマクロで上手に行う方法はありません。 上述のようにWクリックか、もしくは右クリックを使います。

kana14
質問者

お礼

回答いただきましてありがとうございます。 貼り付け先の罫線が消えないように「xlPasteFormats」を「xlPasteAllExceptBorders」に換え、実行したらできました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>1回目にクリックしたセルの値と書式を2回目にクリック クリックでイベントを発生して行うことになりますが 実際、使ってみるとセルを選択する毎にイベントが発生して 思わぬところにコピー、貼り付けされたり・・・・・と非常に使いにくくなりますよ そこで提案ですがダブルクリックで コピー ⇔ 貼り付け と交互に処理をするようにすれば 如何でしょうか 以下をシートモジュールに貼り付けて、お試しください Option Explicit Dim myClik As Long Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   With Target     If myClik = 0 Then       .Copy       myClik = 1     Else       .PasteSpecial Paste:=xlPasteValues       .PasteSpecial Paste:=xlPasteFormats       Application.CutCopyMode = False       myClik = 0     End If   End With Cancel = True End Sub

kana14
質問者

お礼

回答いただきましてありがとうございます。 貼り付け先の罫線が消えないように「xlPasteFormats」を「xlPasteAllExceptBorders」に換え、実行したらできました。

関連するQ&A