- ベストアンサー
エクセルでコピペ先セルが空白でないとき知らせる機能
当方エクセル初心者で、プログラミングはほぼ分かりません。 詳しく教えていただきたいです。 エクセル2007で、sheet1からsheet2にコピー&ペーストする、というようなマクロを組みました。 そのマクロだと、ペーストする先のセルに何かが入力されていても、上書きされて消えてしまいます。 なので、その場合にポップアップなどで知らせる(キャンセルする)機能をつけることはできますか? 例えば、「入力先のセルに既にコマが入っています。置き換えますか?→はい/キャンセル」のような感じです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1の、A1:E5 という範囲を、 Sheet2の、A1に貼り付ける。 既にSheet2のA1:E5に値が入っている場合は注意喚起のボックスが出る。 という形です。 ご意向に合っているでしょうか。 適宜アレンジください。 Sub ppp() Dim Ws1 As Worksheet, Ws2 As Worksheet Dim Res As Long Dim Rng As Range, Sel As Range, Flg As Boolean Set Ws1 = Worksheets("sheet1") Set Ws2 = Worksheets("sheet2") Flg = False With Ws2 Set Rng = .Range(.Cells(1, 1), .Cells(5, 5)) End With For Each Sel In Rng If Sel.Value <> "" Then Flg = True End If Next Sel If Flg = True Then Res = MsgBox("貼付先には既に値が入っています。処理を続けますか", vbYesNo) If Res = 6 Then With Ws1 .Range(.Cells(1, 1), .Cells(5, 5)).Copy End With Ws2.Cells(1, 1).PasteSpecial Paste:=xlPasteAll ElseIf Res = 7 Then MsgBox "終了します" Application.CutCopyMode = False Exit Sub End If ElseIf Flg = False Then With Ws1 .Range(.Cells(1, 1), .Cells(5, 5)).Copy End With Ws2.Cells(1, 1).PasteSpecial Paste:=xlPasteAll End If Application.CutCopyMode = False Set Rng = Nothing Set Ws1 = Nothing Set Ws2 = Nothing End Sub 一応説明。 1.まず貼り付け先の範囲にデータが入っていないか確認する。 2.データがない場合 → コピーして貼り付け 3.データがある場合 → 注意喚起のボックスを出す 4.それで「はい」ならば、コピーして貼り付け 5.いいえならば、終了
その他の回答 (1)
- play_with_you
- ベストアンサー率37% (112/301)
できます。 CountAで0かどうか判別すればいい。
お礼
ありがとうございます。 正直、内容はよくわかっていない部分もありますが お陰さまで求めていた形にすることが出来ました。