値のみ貼り付けをするマクロ〜やさしいマクロ講座
マクロ講座17回
値の貼り付けをするマクロ
マクロ講座16回では、形式を選択して貼り付けを行う場合の、
「値の貼り付けをするマクロ」を作成しました。
今回は、その中身を見ていきます。
(サンプルファイルは、こちらから マクロ講座17回サンプルデータ)
Selection.PasteSpecialを使う
VBEを起動させます。
Alt+F11
値の貼り付けマクロのコードを見てみましょう。

Alt+F11
値の貼り付けマクロのコードを見てみましょう。

Sub 値の貼り付け2()
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub
【コードの解説】
Selection.PasteSpecial は、
Selection 選択した位置に PasteSpecial 形式を選択して貼り付け
を実行しなさいということ
Paste:=xlPasteValues
の部分が、
貼り付ける形式は 「値」とするの意味です。
Operation:=xlNone 演算は「行わない」(Operation:=xlNone)
SkipBlanks:=False 「空白を 無視する」はオフ
Transpose:=False 「行列を入れ替える」はオフ
Paste は、Special なのよ、だからPasteSpecial
PasteSpecialは、形式を選択して貼り付け。
いろいろあって特別なので、PasteSpecial という名前。
(英語はストレートでいいね。)
Selection.PasteSpecial は、
Selection 選択した位置に PasteSpecial 形式を選択して貼り付け
を実行しなさいということ
Paste:=xlPasteValues
の部分が、
貼り付ける形式は 「値」とするの意味です。
Operation:=xlNone 演算は「行わない」(Operation:=xlNone)
SkipBlanks:=False 「空白を 無視する」はオフ
Transpose:=False 「行列を入れ替える」はオフ
Paste は、Special なのよ、だからPasteSpecial
PasteSpecialは、形式を選択して貼り付け。
いろいろあって特別なので、PasteSpecial という名前。
(英語はストレートでいいね。)
注意
ここで一つ注意点があります。
汎用的に使うために、セル範囲を先にコピーしました。つまり、このマクロを実行する前に、あらかじめどこかのセルをコピーしておかなければいけないということ。
クリックボードの中に貼り付けるものが入っていることが必要です。
ここで一つ注意点があります。
汎用的に使うために、セル範囲を先にコピーしました。つまり、このマクロを実行する前に、あらかじめどこかのセルをコピーしておかなければいけないということ。
クリックボードの中に貼り付けるものが入っていることが必要です。


もし、コピーせずに、PasteSpecialを実行しようとすると、エラーになります。
エラーメッセージが嫌だなという時は、エラー回避のコードを入れておくと嫌な思いをしないで済みます。
エラーメッセージが嫌だなという時は、エラー回避のコードを入れておくと嫌な思いをしないで済みます。
スポンサーリンク
スポンサーリンク
エラーを回避〜 エラー回避のコードを入れておく
マクロ講座17回のサンプルでは、この実行時エラーを回避するために、
On Errorステートメントでエラーを回避しています。
On Error Resume Next
エラーの原因となった行を無視し、その次の行を再開します。

On Errorステートメントでエラーを回避しています。
On Error Resume Next
エラーの原因となった行を無視し、その次の行を再開します。

マクロの編集
マクロ講座16回のマクロコードに
On Error Resume Next
の1行を追加します。
On Error Resume Next
の1行を追加します。
さらに、以下のコードの不要部分を削除すると、すっきりします。
Operation:=xlNone,SkipBlanks :=False, Transpose:=False
Operation:=xlNone,SkipBlanks :=False, Transpose:=False
不要コードを削除した値の貼り付けマクロコード
Sub 値の貼り付け()
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
エラー回避を追加したコード
Sub 値の貼り付け()
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
今日の講義は以上です。お疲れ様でした。
スポンサーリンク
スポンサーリンク