我正在尝试编写一段代码,以允许Excel在数据行中运行并自动突出显示需要突出显示的那些行。
单元格G,H和I都是公式。 G10等于C10 / B10,H10等于D10 / B10,而I10等于E10 / B10。
Sub HighlightRows()
On Error Resume Next
Range("A10").Select
Range(Selection, Selection.End(xlDown)).Select
rowcount = Selection.Rows.Count
Range("A10").Select
For mycounter = 1 To rowcount
Ret1 = FormatPercent(ActiveCell.Offset(0, 6).Value, 2, vbTrue)
Ret2 = FormatPercent(ActiveCell.Offset(0, 7).Value, 2, vbTrue)
Ret3 = FormatPercent(ActiveCell.Offset(0, 8).Value, 2, vbTrue)
If ActiveCell.Offset(0, 6).Value = "#DIV/0!" Then
ActiveCell.Offset(1, 0).Select
ElseIf Ret1 >= "0.50%" Then
Selection.EntireRow.Interior.Color = 65535
ActiveCell.Offset(1, 0).Select
ElseIf Ret2 >= "3.00%" Then
Selection.EntireRow.Interior.Color = 65535
ActiveCell.Offset(1, 0).Select
ElseIf Ret3 > "15.00" Then
Selection.EntireRow.Interior.Color = 65535
ActiveCell.Offset(1, 0).Select
ElseIf Ret3 = "15.00%" Then
Selection.EntireRow.Interior.Color = 65535
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Next
End Sub
这是我为此特定模块提供的所有代码。我分解了Ret1,Ret2和Ret3,因为我需要找出其中哪一个引起了麻烦。
当前,我的问题是ElseIF Ret3>“ 15.00%”。如果您查看我的数据单元的图片,那么问题就出在I13。
当我在VBA中运行代码时,它显示Ret3为“ 4.21%”,但是当它到达Ret3>“ 15.00%”的代码行时,它将突出显示该行。
我已经在线搜索过,但找不到任何有用的信息。我已经和操作员一起玩了,但是我无法使其正常工作。通常,在我不得不问一个问题之前,我会在StackOverflow上找到我需要的答案,但是我还没有发现任何可以在整个数据集中一致地解决该问题的东西。
答案 0 :(得分:1)
字符串不是数字。比较字符串"100" < "99"
是正确的,因为它是字母顺序而不是数字顺序,并且1在9之前。
因此,与其在比较之前将所有数字都转换为字符串,不如将所有字符串转换为数字会更好。
Option Explicit
Sub HighlightRows()
On Error Resume Next
Range("A10").Select
Range(Selection, Selection.End(xlDown)).Select
rowcount = Selection.Rows.Count
Range("A10").Select
For mycounter = 1 To rowcount
Dim Ret1 Double
Dim Ret2 Double
Dim Ret3 Double
Ret1 = CDbl(ActiveCell.Offset(0, 6).Value)
Ret2 = CDbl(ActiveCell.Offset(0, 7).Value)
Ret3 = CDbl(ActiveCell.Offset(0, 8).Value)
If ActiveCell.Offset(0, 6).Value = "#DIV/0!" Then
ActiveCell.Offset(1, 0).Select
ElseIf Ret1 >= 0.005 Then
' and so on...
以此类推。