結合されている場合があるアクティブセルにA2セルの値だけをコピペしたい?
Question 104.1 Previous Next
こんにちわ、VBAマクロについての質問です。
『同じシート内の、現在アクティブなセル(※) に、"A2"セルの値のみをコピーして貼付けする』
(※) 毎回アドレスが変わり、単一の時や結合された時もあります。
ここまでを1つのマクロで実行したいのです。 コピー先が毎回変わる場合、どう制御文を組めば良いのでしょうか?
サイト内や本を拝見し、近いのはあったのですが応用させるスキルがなくて・・・
ご指導宜しくお願い致します。
Answer   Copyright (C) 2010.12.22 永井善王
ご自分でどこまでできて、どこがわからないのかを教えていただきたかったですね。 そうでないと丸投げ質問になってしまい、世間では嫌われる場合がありますよ。

A2セルをコピーして、B2セルへ値を貼り付けるマクロを記録してみましたか? 下記のようになるはずです。
    Range("A2").Select
    Selection.Copy
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
これだけで、もう半分以上できていると言えますが、あなたは青字の部分つまり、「毎回アドレスが変わる」 ことと 「結合セル」もあるので考えあぐねているのですね。

「毎回アドレスが変わる」と言っても、アクティブセルへ貼り付けるのですから、A2セルのコピーにかかる前にアクティブセルのアドレスを取得しておいて、後で、それを頼りにして貼り付ければ、第1段階はできあがります。
    アクティブセル = ActiveCell.Address
    Range("A2").Select
    Selection.Copy
    Range(アクティブセル).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
貼り付けるセルが単一セルだけなら上記マクロで完成ですが、「結合された時もある」ということなので対応策を考えましょう。
このマクロ集の別のページに
[結合セルの値を異なるシートの結合セルにコピーするには?] があります。
くわしいことは、そちらを読んでいただきたいですが、そこで質問された方が採用されている「値の代入」 が使えると思います。
あなたのケースに当てはめると、アクティブセルへA2セルの値を代入すればよいので、下記のようになるはずです。
Sub アクティブセルにA2セルの値を代入する()
    アクティブセル = ActiveCell.Address
    Range(アクティブセル).Value = Range("A2").Value
End Sub
上記マクロは下記のように簡単にできます。
Sub アクティブセルにA2セルの値を代入する()
    Selection.Value = Range("A2").Value
End Sub
「サイト内や本を拝見し近いのはあった」ということで、きっと、あと一歩のところだったのでしょうね。 頑張って完成させたらマクロを見せてください。 お待ちしています。

 

Excel VBA Macro