「vba 入力規則 コピー」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、データの入力規則をコピー&ペーストするには、どのようなコードを書けばいいのかを探していた方による検索です。
コピー元とコピー先を、どうやって指定するのかによって、いろいろな仕様が考えられそうですが、アクティブなセルに設定されている入力規則を、Application.InputBoxメソッドで指定したセルにコピーするExcelマクロを作ってみました。
データの入力規則をコピー&ペーストするサンプルマクロ
コピーしたい入力規則が設定されているセルがアクティブな状態で、以下のSubプロシージャを実行すると、
「アクティブセルの入力規則をコピーしたいセルを選択してください。」
いうインプットボックスが表示され、コピー先セルを指定後に[OK]ボタンをクリックすると、入力規則のコピー&ペーストが行われます。
Dim rng As Range
On Error Resume Next
Set rng = Application.InputBox( _
Prompt:="アクティブセルの入力規則をコピーしたいセルを選択してください。", _
Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
rng.PasteSpecial xlPasteValidation
Application.CutCopyMode = False
End Sub
サンプルマクロの解説
入力規則のコピーを行っているのは、最後のほうの、
ActiveCell.Copy
rng.PasteSpecial xlPasteValidation
です。
[形式を選択して貼り付け]ダイアログを使った、入力規則の貼り付け操作をマクロ記録すると、
Selection.PasteSpecial Paste:=xlPasteValidation, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
というコードができます。
このコードを流用したのが、
rng.PasteSpecial xlPasteValidation
です。
Range.PasteSpecialメソッドの第1引数・Pasteに、定数・xlPasteValidationを指定すると、データ入力の貼り付けが行われます。
名前付き引数・Pasteを使ってもいいのですが、定数自体が「xlPasteValidation」で意味は十分わかりますから、上記のプロシージャでは名前付き引数ではなく標準引数にしています。
入力規則の貼り付けを行っている
rng.PasteSpecial xlPasteValidation
の行で終わると、セルでコピーだけを実行した状態のままになってしまうので、
Application.CutCopyMode = False
を入れています。
コピー先のセルを指定するApplication.InputBoxメソッドを利用している部分は、別記事でご紹介しているのと同じです。
Home » Excel VBA Rangeオブジェクト » 入力規則・Validation » データの入力規則をコピー&ペーストするExcelマクロ