VBATips

Rangeに.Valueは必要?不必要?省略しても良い?【ExcelVBA】

値の取得や値入力はValueプロパティ

セルに値を入力する【Valueプロパティ】【ExcelVBA】で説明していますが、
通常、VBAでセルにデータ反映する時は.Valueをつけます。

'(例)
  Range("A1").Value = "あいうえお"
  Cells(2,1).Value = "あいうえお"

Valueプロパティがなくても同様の動作となる

Web上にサンプルが豊富にあるVBAマクロのコードでは、
Valueを付けない(省略された)コードも多く見受けられます。

これはどちらも正解で、Range、Cellsの場合、省略された場合は.Valueプロパティを指定されたとみなします。

'(例).Valueを省略しても
  Range("A1") = "あいうえお"
  Cells(2,1) = "あいうえお"

'(例).Valueを省略しなくても結果は同じ
  Range("A1").Value = "あいうえお"
  Cells(2,1).Value = "あいうえお"

注意点

  • Valueをつけてもつけなくてもどちらでもいいです。
    大事なのは省略されても結果が一緒だという事を理解する事です。
  • 最初は誰もがコピペで見様見真似でコード作成します。正常動作後、コードを見直すのは大事です。
  • RangeとCellの違いや、使い分けはは以下記事を参考にしてください。
    RangeとCellの使いわけ【VBA基本】
  • 上記がプログラマーの癖になるので、つけるならつける、つけないならつけないと統一すべきです。
    マクロはプログラム開発の敷居が低いです。その為、属人化しやすい事がデメリットです。

関連記事

セルに値を入力する【Valueプロパティ】【ExcelVBA】
セルのシリアル値を取得する【Value2プロパティ】【ExcelVBA】
セルの表示しているデータを取得する【Textプロパティ】【ExcelVBA】
セルの数式を取得する【Formula/FormulaR1C1プロパティ】【ExcelVBA】

コメント

タイトルとURLをコピーしました