Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » データの入力規則をコピー&ペーストするExcelマクロ

データの入力規則をコピー&ペーストするExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba 入力規則 コピー」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、データの入力規則をコピー&ペーストするには、どのようなコードを書けばいいのかを探していた方による検索です。

コピー元とコピー先を、どうやって指定するのかによって、いろいろな仕様が考えられそうですが、アクティブなセルに設定されている入力規則を、Application.InputBoxメソッドで指定したセルにコピーするExcelマクロを作ってみました。

[スポンサードリンク]

データの入力規則をコピー&ペーストするサンプルマクロ

コピーしたい入力規則が設定されているセルがアクティブな状態で、以下のSubプロシージャを実行すると、
「アクティブセルの入力規則をコピーしたいセルを選択してください。」
いうインプットボックスが表示され、コピー先セルを指定後に[OK]ボタンをクリックすると、入力規則のコピー&ペーストが行われます。

Sub アクティブセルの入力規則をコピーする()
 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

 ActiveCell.Copy
 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 » ExcelVBA Rangeオブジェクト » 入力規則・Validation » データの入力規則をコピー&ペーストするExcelマクロ

「入力規則・Validation」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.