Vba 仅识别.Value中第一位数字的代码

Vba 仅识别.Value中第一位数字的代码,vba,excel,Vba,Excel,我有下面的代码,除了一个问题。 它识别H列中的值,并为该行高亮显示H列中数字不超过40的行。 但是,下面的代码实际上是在寻找第一个数字为4或大的行,突出显示以数字1、2开头的任何行,或H列中的第一个数字。因此,它突出显示H列值为100的行 Sub color40() Sheets("40+").Select Lastrow = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To Lastrow If Worksheets("40+").Cells(

我有下面的代码,除了一个问题。 它识别H列中的值,并为该行高亮显示H列中数字不超过40的行。 但是,下面的代码实际上是在寻找第一个数字为4或大的行,突出显示以数字1、2开头的任何行,或H列中的第一个数字。因此,它突出显示H列值为100的行

Sub color40()

Sheets("40+").Select

Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Lastrow
If Worksheets("40+").Cells(i, 8).Value < "40" Then
    Range(Cells(i, 2), Cells(i, 8)).Interior.color = RGB(160, 140, 150)

End If
Next i

End Sub

40是文本,40是数字。当你用引号括起一个数字时,它通常不会对数字求值,而是将它们作为字符串求值。试试这个:

Sub color40()

Sheets("40+").Select

Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Lastrow
If Cells(i, 8).Value < 40 Then
    Range(Cells(i, 2), Cells(i, 8)).Interior.color = RGB(160, 140, 150)

End If
Next i

End Sub

如果您只想计算1位数字,可以使用LEFT函数进行计算

语法:

LEFT( text, [number_of_characters] )
例如:

If LEFT(Worksheets("40+").Cells(i, 8).Value, 1) < 4 Then
    Range(Cells(i, 2), Cells(i, 8)).Interior.color = RGB(160, 140, 150)
End If

请记住更改您需要评估的值。

对不起,您的问题是什么?请阅读>