ExcelマクロVBA技術解説
セルの値について(Value,Value2,Text)

ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説
最終更新日:2013-09-05

セルの値について(Value,Value2,Text)


マクロVBAにおいて、セルの値を操作する事は基本の基本ですが、意外に理解できていない場合が多いようです。


Value
指定されたセル範囲の値を表すバリアント型 (Variant) の値を設定します。
値の取得および設定が可能です。

Value2
セルの値を設定します。値の取得および設定が可能です。
バリアント型 (Variant) の値を使用します。

Text
指定されたオブジェクトに対し、文字列を設定します。
値の取得のみ可能です。
文字列型 (String) の値を使用します。

ValueとValue2の違い
Value2 プロパティでは、通貨型 (Currency) および日付型 (Date) のデータ型を使用しない点のみが、Value プロパティと異なります。
倍精度浮動小数点型 (Double) を使用することにより、これらの 2 種類のデータ型の値を浮動小数点数として返すことができます。

以上は、ヘルプからの抜粋になります。

これだけでは、なかなか理解しづらいでしょう。

実際の例です。

セルに
2013/6/20」を入れ、表示形式を「yyyy"年"mm"月"dd"日"」とした場合、
Value : 2013/06/20 ・・・ 日付型
Value2 : 41445 ・・・ 倍精度浮動小数点型
Text : 2013年06月20日 ・・・ 文字列型


データ型に注意して下さい。

問題は、関数・メソッド等でセルを指定した場合、
Value、Value2、Textのいずれが使用されるかが不明な事が多い事です。


例えば、WorksheetFunctionを使う場合

CountIf関数の場合、
検索値が、文字列として「'41445」、「'6月20日」、「2013/6/20」のいずれでも対象となります。
従って、Value、Value2、Textのいずれでも良いと言う事になります。

しかし、

Matchの場合は、
検索値が、数値型として「41445」でなければ検索されません。
従って、Value2でなければなりませんので、通常はこれを省略して使います。

また、

Findメソッド値で検索の場合は、Textで検索されることになります。

AutoFilterの場合は、

バーションにより変化しており、特に日付は2007以降で大きく変わっています。
日付のオートフィルタ(AutoFilter)
とても便利なオートフィルターですが日付となると結構大変です。以下の表で説明します。普通はこんなように指定します。Sub Macro1() Range("A1").Select Selection.AutoFilter ActiveSheet.Range(_$A$1:$B$11_).AutoFilterField:=1,


大雑把に言えば、

ワークシート関数(WorksheetFunction)の引数に指定する場合は、このプロパティを指定しない。

Range等のメソッドでは、個別に対応が必要になります。



同じテーマ「マクロVBA技術解説」の記事

値渡し、参照渡しについて(ByVal,ByRef)
最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)
ユーザー定義関数の作り方
セルの値について(Value,Value2,Text)
Excelのバージョンを判断して「名前を付けて保存」
空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)
空白セルを正しく判定する方法2
Rangeオブジェクト.Valueの省略について
ユーザー操作を制限する(Locked,Protect,ScrollArea)
シートに数式を設定する時のセル参照の指定方法
標準モジュールとシートモジュールの違い


新着記事NEW ・・・新着記事一覧を見る

Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.繰り返し処理(For Next)|ExcelマクロVBA入門
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄


  • >
  • >
  • >
  • セルの値について(Value,Value2,Text)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ