如果单元格中的值是文本格式而不是实际值,则会得到该结果。有可能是这种情况吗?
其他的事情要记住,虽然这不会是你存在的问题或文本将永远是红的原因,是94%,实际上是0.94,而不是94
编辑:(我正在对我的原始答案进行编辑以回应评论,因为我需要包含代码,但这些代码并没有进入评论)
您还有其他一些问题。
第一个是,如果这是由单元格(16,3)中的值驱动的,我不确定您应该从Textbox1_Change事件驱动它。通过这样做,您正在等待某人在该文本框中输入值,并立即用该单元格中的任何值覆盖它。最好在表单加载期间填写条目。
很大程度上取决于你想要做什么,而且我没有关于这方面的信息。其次,如果您逐步浏览代码,您会发现TextBox1.Value正在返回一个字符串;它有双引号。但是你将它与一组数值相比较。
第三是你的代码没有处理(比方说)80%的精确匹配的情况。
第四是如果你直接从单元格中抽取值,它实际上是一个百分比值,它会出现为0.94,而不是百分比格式。
这处理很多。
Dim rng As Excel.Range
Set rng = ActiveSheet.Cells(16,3)
TextBox1.Value = Format(rng.Value, "00%")
rng.Font.Bold = True
'You should really implement error checking here.
'There's no point reading the value from the textbox if it's coming from a cell.
'Just use the cell value.
If rng.Value >= 0.95 Then
TextBox1.ForeColor = RGB(0, 128, 0) 'Green
ElseIf rng.Value >= 0.8 And rng.Value < 0.95 Then
TextBox1.ForeColor = RGB(255, 153, 0) 'Amber
ElseIf rng.Value < 0.8 Then
TextBox1.ForeColor = RGB(255, 0, 0) 'Red
End If
Set rng = Nothing
尝试在代码行'If TextBox1.Value> 95 [...]''处添加一个断点,然后将鼠标悬停在TextBox.Value部件上,以检查代码中的值视图。我无法在代码中看到错误,因此我们需要检查文本框是否提取了正确的值。用户窗体上还是工作表本身上的这个文本框? – Aiken 2015-02-06 08:34:33
我现在检查了。单元格中的值是百分比94%。我用了以下来达成它。 TextBox1.Value =格式(单元格(16,3),“00%”) – SKP 2015-02-06 08:42:17
在定义textbox1值时,使用.value .text的insead。由此你会看到你的if语句中计算出来的真实价值。 – Dubison 2015-02-06 09:28:15