【ExcelVBA入門】コピーして値張りをする方法!

値張り使ってますか?
人によっては多用する値張りをVBAで記述する方法を解説します!

関数でも多用するIFですが、VBAでそれ以上に多用します笑
詳しく解説します。

目次

貼り付けの基本

Range.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

基本的には↑のように使います。
これが貼り付けの基本です。

べたに使うと

Sub test1()

Range("A1:B10").Copy
Range("D1").PasteSpecial

End Sub

こんな感じです。
普通にコピーする感じですよね。

値張りをしてみる

Paste:=xlPasteValues

これが値張りを表します。
試してみましょう。

Sub test2()

Range("A1:B10").Copy
Range("D1").PasteSpecial Paste:=xlPasteValues

End Sub

先ほどのコードに Paste:=xlPasteValues を付け加えただけです。
簡単ですよね。
これだけで値張りができます。

配列を使ってみる

厳密にいうと値張りではないのですが、配列を使っても同じようなことができます。

Sub test3()

Dim a

a = Range("A1:B10")
Range("D1").Resize(UBound(a), UBound(a, 2)) = a

End Sub

こんな感じです。

aという箱に A1:B10 を全部入れちゃいます。
それでD1にイコールしているというものです。

貼り付けではないので大きさを合わせる必要があるので Resize(UBound(a), UBound(a, 2)) というものがでてきます。

Resizeは大きさを変える
Uboundは配列の大きさを表します。

カラムサイズをUBound(a, 2) としているのは、2次元、つまりカラム幅(エックス軸というか横幅)の大きさが知りたいため、2と入れています。

おわり

配列でのやり方を覚えておくといろいろはかどりますよ。

コメント

コメントする

目次