使用one of my previous questions的智慧,我正在写一篇声明:
Flt,检查AC是否在给定的数字之间AC数字范围,检查Bkd是否超过给定的数量。备注
AC为F列;Bkd为H列;Flt为G列AC和Bkd,如下面If的每一行所示目前,这会产生错误91,"With块未设置“或"Type失配”错误。我已经回顾了我以前的问题,并从功能齐全的代码中学到了很多,但似乎无法使它工作。有什么建议吗?
LastRow = Range("G" & Rows.Count).End(xlUp).Row
AC = Range("F9:F" & LastRow)
Bkd = Range("H9:H" & LastRow)
With ActiveSheet.Columns("G").SpecialCells(xlCellTypeConstants, xlNumbers)
If (AC > "199" And AC < "500" And Bkd > "145") Or _
(AC > "499" And AC < "600" And Bkd > "130") Or _
(AC > "599" And AC < "700" And Bkd > "100") Or _
(AC > "699" And AC < "800" And Bkd > "115") Then
.Font.Color = vbWhite
.Interior.Color = vbBlack
End If
End With这是在下面的注释中引用的另一个尝试代码块。
Dim AC, Bkd, Flt As Range
LastRow = Range("G" & Rows.Count).End(xlUp).Row
AC = Range("F9:F" & LastRow)
Bkd = Range("H9:H" & LastRow)
For Each Flt In ActiveSheet.Columns("G").SpecialCells(xlCellTypeConstants, xlNumbers)
With Flt
If (AC > "199" And AC < "500" And Bkd > "145") Or _
(AC > "499" And AC < "600" And Bkd > "130") Or _
(AC > "599" And AC < "700" And Bkd > "100") Or _
(AC > "699" And AC < "800" And Bkd > "115") Then
.Font.Color = vbWhite
.Interior.Color = vbBlack
End If
End With
Next Flt发布于 2016-05-03 05:32:09
我在你的代码中看到了一些“危险信号”。
"199"而不是199。我假设单元格将包含数字199,而不是文本字符串"199“。如果它确实是一个文本字符串,那么,在下面的代码中,您应该将Flt > 199更改为CLng(Flt) > 199。.SpecialCells(xlCellTypeConstants, xlNumbers)的使用将最终影响整个工作表。它应该被消除。您还没有提供带有预期结果的特定测试数据。我取得了这些成果..。

..。从这段代码中,解决上述问题.
Sub test()
Dim AC As Range, Bkd As Range, ClrRng As Range
Dim Flt As Range
Dim mySht As Worksheet
Dim LastRow As Long
Set mySht = Worksheets("Sheet1") ' <- change this to the sheet you want to use
LastRow = mySht.Range("G" & mySht.Rows.Count).End(xlUp).Row
Set AC = mySht.Range("F9:F" & LastRow)
Set Bkd = mySht.Range("H9:H" & LastRow)
Set ClrRng = mySht.Range("G9:G" & LastRow)
For Each Flt In AC
If (Flt > 199 And Flt < 500 And Bkd(Flt.Row - 8, 1) > 145) Or _
(Flt > 499 And Flt < 600 And Bkd(Flt.Row - 8, 1) > 130) Or _
(Flt > 599 And Flt < 700 And Bkd(Flt.Row - 8, 1) > 100) Or _
(Flt > 699 And Flt < 800 And Bkd(Flt.Row - 8, 1) > 115) Then
With ClrRng(Flt.Row - 8, 1)
.Font.Color = vbWhite
.Interior.Color = vbBlack
End With
End If
Next Flt
End Sub发布于 2016-05-03 03:28:12
如果你知道你的错误出现在哪一行,那就更容易了。
使用此代码定义范围:
Set LastRow = Range("G" & Rows.Count).End(xlUp).Row
Set AC = Range("F9:F" & LastRow)
Set Bkd = Range("H9:H" & LastRow)https://stackoverflow.com/questions/36994713
复制相似问题