
VBAのユーザーフォームのテキストボックスで
TextBox5.Value
TextBox5.text
の違いについて教えてください。
てっきり数値かストリングかの違いだと思っていたのですが
Private Sub TextBox5_Change()
ee = TextBox5.Value
dd = TextBox5.text
End Sub
というコードでテキストボックスにいろいろな値を入れて調べてみたのですが
valueもtextもストリングで値が格納されており、
両方とも数値、文字列をどちらとも扱えることが分かりました。
検索して調べてみたのですが
http://www.tsware.jp/study/vol16/vbabegin_32.htm
前者はそのコントロールからフォーカスが離れたときなどに確定した値です。
一方、後者は現在編集中のデータ内容(画面に表示されている内容)です。
編集中の場合にValueプロパティを取得しても、それは前回最後に確定したデータであって、
現在画面に表示されているものではありません。
このページによれば、
文字入力確定後の値がtextに格納されており
編集中の値がvalueに格納されているそうです。
それで、例えば「aaaa」と入力されている途中にカーソルを入れて
「aabaa」としてみました。
しかし、両方とも同じ値が代入されています。
http://officetanaka.net/excel/vba/tips/tips143.htm
このページにはボックスが空のときの扱いが異なるそうなのですが
「aaaa」をクリアしてみると
両方とも""という値が代入されています。
全く同じ挙動をしているように思えるのですが
どうやって使い分ければ良いのでしょうか?
どういうコードなら違いが見られますでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
しばらく調べてみました。
私も同様の疑問でした。>全く同じ挙動をしているように思えるのですが
>どうやって使い分ければ良いのでしょうか?
Office Tanaka では、Value では、Null 値が現れるようなことが書かれていますが、TextBox において、両者は同じです。String型ですから、Null値が現れるはずがありません。
質問のリンク先の以下の内容は、あくまでも、Access の話です。
「テキストボックスへの入力内容を扱う場合には、「Value」プロパティと「Text」プロパティの違いに注意しなければなりません。前者は・・・フォーカスが離れたときなどに確定した値です。一方、後者は・・・現在編集中のデータ内容・・・現在画面に表示されているものではありません。 」
Excelでは、私には、その違いは見出されません。もしかしたら、PasswordChr に違いがあるかと思いましたが、それもありません。単に、VB6の名残りで使うつもりなら、.Textプロパティなんだろうか、というところだけです。同じだと解釈してよいのではないでしょうか。
あっ、それは別として、些細なことですが、その格納した変数のアドレスが違いますね。だから、何ということもありませんが。
Dim a, b
a = VarPtr(TextBox1.Value)
b = VarPtr(TextBox1.Text)
MsgBox "Value: " & a & vbCrLf & "Text: " & b
関数の説明
https://support.microsoft.com/ja-jp/kb/199824
古い内容ですが、ここの質疑回答とほぼおなじです。
http://www.xtremevbtalk.com/excel/108079-textbox …
なお、セルの場合は、Textプロパティは、値の取得のみですから、入力ができません。かなり明確に違いが出てきます。

No.1
- 回答日時:
Textは書式設定に従った見た目の表現で返します。
例えばA1に0.7と書いて書式を%表示にした場合
A=Cells(1,1).Text Aの中身は70%
A=Cells(1,1).Value Aの中身は0.7
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
テキストボックスの値を変数に代入したい。
Visual Basic(VBA)
-
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
4
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
5
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
どこにもフォーカスを当てたくない
Access(アクセス)
-
10
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
11
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
12
UserForm1.Showでエラーになります。
工学
-
13
アクセスVBAのMe!と[ ]
Access(アクセス)
-
14
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
15
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
16
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
17
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
18
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
[VBA]選択範囲の下から上に処理...
-
5
vbscriptを使いexcelを参照して...
-
6
VB.NETでコンボボックスの1行目...
-
7
ユーザーフォームのテキストボ...
-
8
VBAでWEB上の入力項目に値をい...
-
9
[VB.net] DataGridViewのコンボ...
-
10
範囲が指定されている乱数について
-
11
チェックした値を取得したい(C...
-
12
VB2010にて、Log関数の値が違う...
-
13
ListBoxでオートフィルター表示
-
14
PL/SQLでのTO_DATEの時間取得に...
-
15
C# get set
-
16
Powershellのparamについて
-
17
変数名の取得
-
18
C#の質問です
-
19
一番後ろのスラッシュ以降を削...
-
20
VBでBtrieveファイルにアクセス...
おすすめ情報
公式facebook
公式twitter