excel vba中 range.text和range.value的区别

我知道text和value的区别,但是我编辑的下列代码让我很模糊。
我有一个窗体,上面一个ComboBox和一个CommandButton,首先在ComboBox里录入值,通过单击按钮,判断sheet3表中A列从上往下是否为空,如果为空,则将ComboBox的值赋到该单元格内并放弃继续向下查找,如果不为空,则判断该单元格的值是否与ComboBox值相同,相同则放弃向A列录入,如果不相同,则继续在A列向下判断单元格是否为空。以1000行为例,重复在ComboBox中录入”111“然后多次点击按钮的两种代码如下:

代码1:
For a = 1 To 1000
If Sheet3.Range("A" & a).Value = "" Then
Sheet3.Range("A" & a).Value = ComboBox1.Value: Exit For
Else
If Sheet3.Range("A" & a).value = ComboBox1.value Then
Exit For
End If
End If
Next

代码2:
For a = 1 To 1000
If Sheet3.Range("A" & a).Value = "" Then
Sheet3.Range("A" & a).Value = ComboBox1.Value: Exit For
Else
If Sheet3.Range("A" & a).Text = ComboBox1.Text Then
Exit For
End If
End If
Next

代码2只是将代码1中间的那个if中的value换成了text,就实现了我想要的效果(只有一个单元格赋值为”111“),而代码1则是按一次按钮,就会在A列赋值一个”111“,请问这是为什么,另外如果将代码1或代码2中所有的value都变成text,是否也能实现我想要的效果。
请高人来回答一下,多谢了。

value :是数据的意思

text 是文本的意思
具体到excel,一般是在设置了单元格格式后才有区别,比如你设置单元格格式为日期格式,
然后在该单元格输入 2013-3-5 因为单元格格式,所以单元格实际显示为 2013年3月5日
那么这个时候, value=2013-3-5 , text =2013年3月5日。
或者你可以简单的理解为:value就是你输入的数据,text 是单元格实际显示的文本。

至于你的问题,我感觉根本原因不应该是这个。是不是你设置了单元格格式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-05
数据类型不同。

如单元格的格式为“常规”,Range.value的数据类型会根据单元格内容而改变。
如内容为"ABC"则为文本型,内容为“123”则类型为数值型

而Range.text、 ComboBox1.Value、 ComboBox1.text均为文本型

你的代码1,如输入"abc",则没问题;如输入123,则会重复添加。本回答被提问者和网友采纳
第2个回答  2013-03-05
Value 属性会因为你单元格的格式设定发生变化,比如货币,日期等类型。因为不知道你的具体情况,不敢肯定。如果你不喜欢用text这个属性的话,可以试试“Value2”属性,应该就不会出现上面的问题了。