値張り使ってますか?
人によっては多用する値張りを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と入れています。
おわり
配列でのやり方を覚えておくといろいろはかどりますよ。
コメント