• ベストアンサー

エクセルでコピペ先セルが空白でないとき知らせる機能

当方エクセル初心者で、プログラミングはほぼ分かりません。 詳しく教えていただきたいです。 エクセル2007で、sheet1からsheet2にコピー&ペーストする、というようなマクロを組みました。 そのマクロだと、ペーストする先のセルに何かが入力されていても、上書きされて消えてしまいます。 なので、その場合にポップアップなどで知らせる(キャンセルする)機能をつけることはできますか? 例えば、「入力先のセルに既にコマが入っています。置き換えますか?→はい/キャンセル」のような感じです。 よろしくお願いします。

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

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1246)
回答No.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.いいえならば、終了

aya_xxs2
質問者

お礼

ありがとうございます。 正直、内容はよくわかっていない部分もありますが お陰さまで求めていた形にすることが出来ました。

その他の回答 (1)

回答No.1

できます。 CountAで0かどうか判別すればいい。

関連するQ&A

  • Excel 空白セルのコピペについて

    http://imgur.com/5e8TsP1 上記図のように、シート1のB列に各文字を入力しています。 そして、A列にはもしB列に文字が入力されていたらID代わりの数値を表示する、という式を入力してあります。 次に、シート1のA列、B列をコピーして、シート2に数値としてペーストをします。 すると、A列は空白のはずが、xldown操作をすると元のセルで式が入力されていたものまで選んでしまい、真の空白セルとして認識してくれません。 そこで、このような例の場合、どうコピーペースト、または選択をすれば偽物の空白 セルを生み出さないように出来るでしょうか? 実際に使用するデータは項目名が多く存在し、マクロですべてのセルを選択→新規ブックを作成してそこにペースト、という処理を行っています。 この時に偽物の空白セルが出ると、データベースに読みこむ際に不都合が生じますので、何とか改善を図りたいです。 VBA、関数、Excel上のテクニックのいずれでも構いませんので、どうかご教授下さい。 よろしくお願いいたします。

  • エクセルのセルへのコピペについて

    エクセル2013を最近買って使い始めました。メールの文章の一部をコピーしてエクセルのセルにペーストしているのですが、長い文章だとなぜかペーストしたときに1つのセルではなく、ペーストしたいセルとその下のセルに2行にわたって入力されてしまいます。それで、いちいち下のセルの中の文章を切り取って目的のセルの中にコピペしなければなりません。エクセルを普段使うことはほとんどないので、どうすればいいのか分かりません。どうやったら1つのセルの中にペーストした文章が収まるようになるでしょうか。

  • エクセルマクロ VBAで順次下セルからコピペする方法

    VBA初心者です。教えてください。 同一bookに"sheet1"と"sheet2"があります。 "sheet1"セルA1のデータ(数字or文字)をコピーして"sheet2"セルA1にペースト。 次に "sheet1"セルA2のデータ(数字or文字)をコピーして"sheet2"セルA2にペースト。 "sheet1"セルA3のデータ(数字or文字)をコピーして"sheet2"セルA3にペースト。 ↓ セルAxにデータがあれば、繰り返し。 ↓ "sheet1"セルAxが空欄になったら終了。 このような処理は、どう記述したらよいのでしょうか? お願いします。教えてください^^;

  • エクセルで保存時に空白セルをチェックしたい

    エクセル2010です。 先日ここで、複数あるシートの特定のセルが空白の時には「A1セルが空白です」というアラームが出るようなマクロを丁寧に教えてもらってうまく行ったのですが、別のBookで同じアラームを出したいのですが、少し条件が違っており、自分では何とも修正できませんのでお助け下さい。 先日教わったコードは複数ある全シートの特定のセルについて検証するのですが今度のBookでは、入力シートが予め余分に10枚程度コピーで作ってあるので、同じコードでは未入力の書式シートにも何か入力していないと保存できないことになり、未入力のシートに何か入れてしまうと入力シートとの区別がつかないことになります。 つまり、Activeシートだけチェックするようなマクロにしたいのですが。 ちなみに先日教えてもらったコードは下記の通り。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim wkCount As Integer Dim wkCounter As Integer With ThisWorkbook wkCount = .Sheets.Count For wkCounter = 1 To wkCount If .Sheets(wkCounter).Range("A1").Value = "" Then MsgBox Format(wkCounter, "0") & "番目のシートの" & "A1が未入力!", vbCritical + vbOKOnly, "確認" Cancel = True Exit Sub End If

  • エクセル コピー先に残った関数のある行クリア

    エクセルのコピー元シート:100行10列 コピー先シート:ペーストする先 セル10 関数5 N行(例えば150行) コピーした後にデータが張り付いていない行に関数だけ残る(50行) この不要な行の関数を毎回手でクリアしています。 マクロで関数を消すにはどうすればよろしいかご教示願いたく、 よろしくお願いいたします。

  • エクセルのコピペ機能で

    当方、windowsで、 エクセル2003を利用しております。 エクセルでのセルのコピペ作業で、 行でも列でもいいのですが、 複数行、または複数列に渡る範囲のセルをコピーして、 別のシートに貼り付ける際、 コピーした範囲のセルで、数値が含まれるセルのみをコピーして、 貼り付け先にデータが入っていればそこは貼り付けられず、貼り付け先を残したまま、貼り付けするような機能ってないでしょうか? たとえばですが、コピー元の範囲(図1)をコピーし、(図2)に貼り付けた時に、(図1)が出来上がってしまうのではなく、 図1と図2を足した状態で図3の形で、ペースとしたいのですが、こんな機能ないでしょうか?分かりにくくなってまして申しわけないです。 ご教授いただければ幸です。 図1)  A B C D E 1ア  サ 2イ 3 4エ     ネ 図2)  A B C D E 1  カ 2  キ 3ウ ク 4  ケ 図3)  A B C D E 1ア カ サ 2イ キ 3ウ ク 4エ ケ    ネ

  • Excelのセル内改行について

    Excelのセル内に改行を含むデータが入力されています。 Excelでコピー&ペーストを行えば問題ないのですが、 メモ帳にペーストすると改行が ↑ と表示されてしまい、 1行になってしまいます。 メモ帳にペーストしてもセル内で改行されているように 改行したままで貼り付けを行うことは可能でしょうか? Sheet1:A1 あいうえおかきくけこ さしすせそ たちつてとなにぬねのはひふへほ メモ帳:貼り付け あいうえおかきくけこ↑さしすせそ↑たちつてとなにぬねのはひふへほ

  • エクセルマクロ 別シートへ行列を入れ替えてコピペ

    下記内容のエクセルのマクロをご教示いただきたいと存じます。 ①「data」シートのB2からデータが入力されている最終行までをコピー(20行目までデータが入力されていたとすると、B2~B20をコピー。最終行は不定) ②「result」シートのE列のデータが入力されている最終行の次行に①のデータを行列を入れ替えてペースト(E列のデータが19行目まで入力されていたとすると、「E20」セルに①のデータ<この場合だと、「data」シートのB2~B20のデータ>を行列を入れ替えてペースト。「result」シートのE列の最終行は不定)

  • エクセルのブック間のコピペのマクロ構文を教えて下さい

    はじめまして。 マクロは初心者なので、ご教授いただけるとありがたいです。 エクセルのワークブック1のシート1をコピーして、ワークブックAのシートaにペーストをする構文をお願いします。 マクロの記録で作って実行してみましたが、コピーするファイルが開いているときはうまくいって、開いていないとないとうまくいきませんでした。 コピーするファイルが開いていない状態でもコピーできる方法はないのでしょうか… よろしくお願いいたします。

  • エクセル-1つのセルで16文字を越えるとセルに色をつけたい

    タイトルのようなことをやりたいと思っています。 少し前に入力規則で16文字を越えるとエラー表示させるようにしたくて設定したのですが、文字列をコピー&ペーストすると、書式等も上書きされてエラー表示が出ずにスルーしてしまうので困っています。 ですので、16文字を越えた入力は自動的にセルの色が変わる(又は文字の色が変わる)ようにしたいのですが、関数・マクロ等でできるでしょうか? 初心者で何をどうすれば良いのかわかっていなくて、 質問がわかりにいかもしれませんがよろしくお願いいたします<(_ _)>