入力規則やメッセージをコピーするには?

Question 49.4 Previous Next
詳細は こちら 500連発・第2弾のマクロ番号 178の解説に、
「入力規則やメッセージをコピーするマクロは、自動記録できるが実行できないので、回避措置として [形式を選択して貼り付け]の定数に [罫線を除くすべて]の 'xlAllExceptBorders' を使った」とあります。
その後の状況がわかれば教えてください。
Answer   Copyright (C) 2001.10.15 永井善王
Excel はバージョンアップされるたびに、どんどん改良されていますが [形式を選択して貼り付け]も同様で、下図でもわかるように Excel 95では 6通りであったものが、Excel 2002になると 10通りに増えました。
Excel 95 Excel 2002
Excel 95のダイアログボックス Excel 2002のダイアログボックス
「入力規則」の貼り付けはExcel 97で追加されましたが、ご質問の中の文章にあるとおり Excel 2000までは、マクロとして自動記録できるのに実行はできませんでした。
早速その後の状況を動作確認して、以下にまとめておきました。
Mac用Excel の最新バージョン 2001
暫定的な改良が行われています。
方法としては、マクロ番号 178で回避措置として採用した [罫線を除くすべて]の 'xlAllExceptBorders' を使って自動記録されます。これにより、とりあえず記録したマクロを実行できるようになりました。しかし、ペースト(貼り付け)するつもりのないものもペーストされてしまうので、本格的に改良されるまでは注意が必要です。
次回バージョンアップを期待しましょう。
Windows用Excel の最新バージョン 2002
本格的に改良されました。
PasteSpecial メソッド(形式を選んで貼付け)の引数 Pasteの定数に xlPasteValidation として用意されました。
例えば、下記マクロの 6行目のコードのように指定することが可能です。
'------------------------------------------------------------------------------
Private Sub 入力規則やメッセージをコピーする()
    Worksheets("SSS").Activate
    コピー範囲 = "D8:I8"                    '◆◆◆
    貼付け範囲 = "D9:I12"                   '◆◆◆
    Range(コピー範囲).Copy                  '◆◆◆
    Range(貼付け範囲).PasteSpecial Paste:=xlPasteValidation
                                                    '入力規則やメッセージを貼付け
End Sub
'------------------------------------------------------------------------------
Excel 2002 の [形式を選択して貼り付け] の定数には、この他にも 2つ追加されました。くわしくは [PasteSpecial メソッドの引数 Paste の定数]を見てください。

 

Excel VBA Macro