Valueプロパティとは?
Excel VBAでセルの値を取得したり、新たに書き込んだりしたいときはValueプロパティを使用します。このプロパティを使用することで、指定したセルの現在の値を取得したり、空白のセルへ書き込む・セルに入っている値を上書きするといったことができます。
Valueプロパティは単独では使用できないため、コードを書く際はこのプロパティを持っているオブジェクトを呼び出す必要があります。Valueプロパティを使用する際に呼び出すオブジェクトは、セルの範囲を表すRangeオブジェクトです。
Valueプロパティの基本的な構文は次のような形になります。
【構文】
Range.Value
指定したセルの値を取得する
Range()メソッドやCells()メソッドと組み合わせてValueプロパティを使用することで、次のような形式のコードでセルを指定して値を取得することができます。
【基本形】
Range(セルの番号).Value 'A3, C8などのセル番号を入力します 例: Range("A6").Value
Cells(行, 列).Value '行と列には数字を入れます 例: Cells(3, 8).Value
まずは試しに、メッセージボックスを表示する関数MsgBoxを使用して、セルの値をメッセージボックスに表示してみましょう。今回は、何も値が入っていないシートのA1セルに「Techmania編集部」と入力し、以下のコードを実行します。
【実行コード】
Sub ValueMsg()
MsgBox Range("A1").Value
End Sub
【実行結果】
【MsgBoxの使い方はこちら】
【Excel VBA】MsgBoxでメッセージボックスを表示する方法を解説Valueプロパティでセルに値を書き込む方法は?
Valueプロパティを使用して指定したセルに新たな値を書き込む場合は、Valueプロパティに値を代入します。次のようなコードでValueプロパティに値を代入することができます。
【基本形】
Range.Value = value 'Rangeで指定されたセルに新たな値(ここではvalue)を書き込む
実際にValueプロパティを使用して空白のセルに値を新たに書き込む場合と、既に値が入っているセルの中身を書き換える場合についてそれぞれ解説していきます。
空白のセルに値を新たに書き込む
新しいシートを作成し、そのシート内で以下のコードを実行してみてください。
【実行コード】
Sub Sample1()
Range("A1").Value = "サンプルコードを実行しました。"
End Sub
【実行結果】
上のコードでは何も値が入っていなかったA1セルの中に「サンプルコードを実行しました。」という文字列を書き込む処理を実行しました。これによって、空白だったセルに文字列が入りましたね。
既に値が入っているセルの値を上書きする
次に、先ほどのコードを実行したシートで、A1セルに入っている「TechMania編集部」の文字列を書き換えてみましょう。
【実行コード】
Sub ValueChange()
Range("A1").Value = "セルの中身が上書きされました。"
End Sub
【実行結果】
A1セルの中身が上書きされました。上のコードを見比べるとわかるように、基本的なコードの書き方は空白のセルでも既に値が入っているセルでも同じです。
応用編: 複数のセルの値をまとめて変更する
今度は複数のセルをまとめて処理します。ここでは、For…Nextというステートメントを使って繰り返し処理をしていきます。
【実行コード】
Sub ValueChange()
Range("A1").Value = "プログラミング言語"
Range("B1").Value = "初心者におすすめの言語ランキング"
Dim LangNames As Variant
LangNames = Array("PHP", "Ruby", "Java", "Python", "JavaScript")
For Count = 1 To 5
Cells(Count + 1, 1).Value = LangNames(Count - 1)
Cells(Count + 1, 2).Value = Count
Next
End Sub
【実行結果】
今回は、こちらの記事(プログラミング言語おすすめランキングTOP10!徹底解説2024)で取り上げた、初心者におすすめのプログラミング言語からベスト5を表示してみました。
今回使用したFor…Nextステートメントや、条件分岐などを組み合わせることで、複数のセルの値を複雑な条件や規則に合わせて書き換えることができます。
Valueプロパティは省略してもよい?
ここまでValueプロパティの使い方について解説してきましたが、実はValueプロパティは省略することもできます。
省略した場合の書き方は以下のとおりです。
【サンプルコード】
Sub Sample2()
Range("A1")= ".Valueは省略可能です。"
End Sub
【実行結果】
省略できるならわざわざ書かなくてもいいんじゃないの?と思われるかもしれませんが、Valueプロパティを省略せずに書くのも、省略して書かないのも正しい書き方です。どちらの方法で書くかは、コードを書くときに優先したいことが何なのかによって決めると良いでしょう。
【省略せずに.Valueを書くメリット】
Valueプロパティを省略せずに書くメリットは、そのコードが何をしているのかがより伝わりやすい形になることです。何度も使用するマクロや、他の人がコードを編集する可能性がある場合などには、Valueプロパティを明示することで読みやすくなり、ミスを防ぐことができます。
【.Valueを省略して書かない場合のメリット】
Valueプロパティを省略するメリットは、無駄なコードが減ることで処理を書くうえでの時間短縮や文字数の削減になることです。頻繁に触ることのないコードや、一度きりで使い捨てるようなコードの場合には、省略した書き方でも良いでしょう。
何よりも大事なことは、どちらの書き方を使うかを決めて、そのコードの中では書き方を統一することです。特に頻繁に読み書きする機会のあるコードの場合は、コードの記法を統一することで読み間違えたり書き間違えたりするリスクが減り、効率的にコーディングができるようになります。
Valueプロパティを使いこなそう!
ここではValueプロパティを使用したセルの値の取得や書き込み・書き換えについて説明しました。特にValueはExcel VBAを使っていると頻繁に使用するプロパティなので、ぜひ使いこなしましょう!
関連記事
VBAの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。