値のみ貼り付けをするマクロ 2.エラー回避
マクロ 17回
値の貼り付けをするマクロ
マクロ講座16回では、形式を選択して貼り付けを行う場合の、
「値の貼り付けをするマクロ」を作成しました。
今回は、その中身を見ていきます。
(サンプルファイルは、こちらから マクロ講座17回サンプルデータ)
Selection.PasteSpecialを使う
VBEを起動させます。
Alt+F11
Alt+F11
前回記録した時の値の貼り付けマクロのコードを見てみましょう。
Sub Macro1() Range("F2:F4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End SubにあるRange("F2:F4").Select の部分は汎用マクロには必要ないので、削除できます。
残りのコードは以下です。
Sub 値の貼り付け2() Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub
【コードの解説】
Selection.PasteSpecial は、
Selection 選択した位置に PasteSpecial 形式を選択して貼り付け
を実行しなさいということ
Paste:=xlPasteValues
の部分が、
貼り付ける形式は 「値」とするの意味です。
Operation:=xlNone 演算は「行わない」
SkipBlanks:=False 「空白を 無視する」はオフ
Transpose:=False 「行列を入れ替える」はオフ
Paste は、Special なのよ、だからPasteSpecial
PasteSpecialは、形式を選択して貼り付け。
いろいろあって特別なので、PasteSpecial という名前。
(英語はストレートでいいね。)
Operation:=xlNone
SkipBlanks:=False
Transpose:=False
の3つも今回のコードには不要です。
Selection.PasteSpecial は、
Selection 選択した位置に PasteSpecial 形式を選択して貼り付け
を実行しなさいということ
Paste:=xlPasteValues
の部分が、
貼り付ける形式は 「値」とするの意味です。
Operation:=xlNone 演算は「行わない」
SkipBlanks:=False 「空白を 無視する」はオフ
Transpose:=False 「行列を入れ替える」はオフ
Paste は、Special なのよ、だからPasteSpecial
PasteSpecialは、形式を選択して貼り付け。
いろいろあって特別なので、PasteSpecial という名前。
(英語はストレートでいいね。)
Operation:=xlNone
SkipBlanks:=False
Transpose:=False
の3つも今回のコードには不要です。
マクロの編集
マクロ講座16回のマクロコードに
On Error Resume Next
の1行を追加します。
On Error Resume Next
の1行を追加します。
Sub 値の貼り付け2() On Error Resume Next Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
さらに、以下のコードの不要部分を削除すると、すっきりします。
Operation:=xlNone,SkipBlanks?:=False,?Transpose:=False
Sub 値の貼り付け2() On Error Resume Next Selection.PasteSpecial Paste:=xlPasteValues End Sub
エラーを回避~ エラー回避のコードを入れておく
注意
ここで一つ注意点があります。
汎用的に使うために、セル範囲を先にコピーしました。つまり、このマクロを実行する前に、あらかじめどこかのセルをコピーしておかなければいけないということ。
クリックボードの中に貼り付けるものが入っていることが必要です。
ここで一つ注意点があります。
汎用的に使うために、セル範囲を先にコピーしました。つまり、このマクロを実行する前に、あらかじめどこかのセルをコピーしておかなければいけないということ。
クリックボードの中に貼り付けるものが入っていることが必要です。
もし、コピーせずに、PasteSpecialを実行しようとすると、エラーになります。
エラーが表示されたら、終了ボタンを押します。
エラーメッセージが嫌だなという時は、エラー回避のコードを入れておくと嫌な思いをしないで済みます。
マクロ講座17回のサンプルでは、この実行時エラーを回避するために、
On Errorステートメントでエラーを回避しています。
On Error Resume Next
エラーの原因となった行を無視し、その次の行を再開します。サンプルコードは次の行がないのでそのまま終了します。
マクロ講座17回のサンプルでは、この実行時エラーを回避するために、
On Errorステートメントでエラーを回避しています。
On Error Resume Next
エラーの原因となった行を無視し、その次の行を再開します。サンプルコードは次の行がないのでそのまま終了します。
不要コードを削除した値の貼り付けマクロコード
Sub 値の貼り付け() Selection.PasteSpecial Paste:=xlPasteValues End Subエラー回避を追加したコード
Sub 値の貼り付け() On Error Resume Next Selection.PasteSpecial Paste:=xlPasteValues End Sub
今日の講義は以上です。お疲れ様でした。