- ベストアンサー
Excel VBA コピーと貼り付け
1回目にクリックしたセルの値と書式を2回目にクリックしたセルに貼り付ける作業を 「Inputbox」を使わずに行うことは可能でしょうか。可能でしたらその方法を教えてください。 (「Inputbox」はセルをクリックした後に「ok」ボタンをクリックする手間があるため。)
- みんなの回答 (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クリックか、もしくは右クリックを使います。
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>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
お礼
回答いただきましてありがとうございます。 貼り付け先の罫線が消えないように「xlPasteFormats」を「xlPasteAllExceptBorders」に換え、実行したらできました。
お礼
回答いただきましてありがとうございます。 貼り付け先の罫線が消えないように「xlPasteFormats」を「xlPasteAllExceptBorders」に換え、実行したらできました。