(Excelマクロ)「.value」を省略してはいけない場合がある

.value」を省略した場合、エラーは出ないのに、目的の動作が実行されないことがあります。このページでは、その現象について、順を追って説明していきます。

このページで解説する項目は次の通りです。上から順番に解説します。




①「.value」の基本

セルに値を入れる――言わずと知れたExcelマクロの基本中の基本です。

Sub Sample1()
Range("A1") = Range("A2")
End Sub
Sub Sample2()
Range("A1").Value = Range("A2").Value
End Sub

どちらの例も、下画像のように、「A1セル」に「A2セル」の値が代入されます。

しかし、複数セルの値を複数セルに代入する場合は、「.value」を省略してはいけません。

②「.value」を省略してはいけない場合

次の例を見てください。

Sub Sample3()
Range("A1:A2") = Range("A3:A4")
End Sub

「A3:A4セル」の値を「A1:A2セル」に代入せよ、というように読めます。しかし、これを実行すると、次のようになります。

画像を見ていただければわかるとおり、「A1:A2セル」の値が消えます。このとき、エラーメッセージは出ません。

きちんと「.value」を付けた次の例では、目的の動作が達成されます。

Sub Sample4()
Range("A1:A2").Value = Range("A3:A4").Value
End Sub

③まとめ

この現象は、 Range(“A1:A2”)=1 のように、複数セルに対して一つの値を入れる場合は発生しません。複数セルに対して、複数セルの値を代入する場合に発生します。

数十行、数百行に及ぶマクロを組む場合、エラーメッセージが出ないため、この現象の原因に気がつくのはなかなか骨が折れます。多少面倒でも、「.Value」は省略しないようにしましょう。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください