提问人:DuWayne Brown 提问时间:8/31/2023 最后编辑:AndreasDuWayne Brown 更新时间:8/31/2023 访问量:37
如果无法识别原始 if 语句,则结束并不断给出编译错误 [已关闭]
End if not recognizing the original if statement and keeps giving a compile error [closed]
问:
我是编码新手,当我去运行代码时,我不断收到编译错误“End If without block if”。以下是我所拥有的。
Sub CompareAndFormatWithGradient()
Dim rateChart1 As Range
Dim rateChart2 As Range
Dim cell1 As Range
Dim cell2 As Range
Dim ws As Worksheet
' Set the worksheet where the data is located
Set ws = Worksheets("Rolling Data Ranked")
' Set the ranges for the two charts
Set rateChart1 = ws.Range("E56:Q56")
Set rateChart2 = ws.Range("W56:AI56")
' Loop through each cell to format
For Each cell1 In rateChart1
For Each cell2 In rateChart2
If cell1.Value > cell2.Value Then
With cell1.Interior 'Start Gold
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 45
.Gradient.ColorStops.Clear
End With
With cell1.Interior.Gradient.ColorStops.Add(0)
.Color = 49407
.TintAndShade = 0
End With
With cell1.Interior.Gradient.ColorStops.Add(1)
.Color = 65535
.TintAndShade = 0
End With ' End Gold
With cell2.Interior ' Start Silver
.Pattern = x1PatternLinearGradient
.Gradient.Degree = 45
.Gradient.ColorStops.Clear
End With
With cell2.Interior.Gradient.ColorStops.Add(0)
.Color = RGB(128, 128, 128)
.TintAndShade = 0
End With
With cell2.Interior.Gradient.ColorStops.Add(1)
.Color = RGB(0, 0, 0)
.TintAndShade = 0
End With ' End Silver
ElseIf cell1.Value < cell2.Value Then
With cell1.Interior ' Start Silver
.Pattern = x1PatternLinearGradient
.Gradient.Degree = 45
.Gradient.ColorStops.Clear
End With
With cell1.Interior.Gradient.ColorStops.Add(0)
.Color = RGB(128, 128, 128)
.TintAndShade = 0
End With
With cell1.Interior.Gradient.ColorStops.Add(1)
.Color = RGB(0, 0, 0)
.TintAndShade = 0
With cell1.Interior 'Start Gold
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 45
.Gradient.ColorStops.Clear
End With
With cell1.Interior.Gradient.ColorStops.Add(0)
.Color = 49407
.TintAndShade = 0
End With
With cell1.Interior.Gradient.ColorStops.Add(1)
.Color = 65535
.TintAndShade = 0
End With
End If
Next cell2
Next cell1
End Sub
我尝试添加和删除结尾 if 语句,但它要么弹出相同的错误,要么说下一个没有 for
答:
1赞
Notus_Panda
8/31/2023
#1
没有尽头
With cell1.Interior.Gradient.ColorStops.Add(1)
.Color = RGB(0, 0, 0)
.TintAndShade = 0
With cell1.Interior 'Start Gold
2赞
JohnM
8/31/2023
#2
您有 2 个问题,导致编译错误的问题是缺少 .With cell1.Interior.Gradient.ColorStops.Add(1)
End With
其次,我猜你没有使用(在模块的顶部......您应该始终使用它,否则 VBA 只是向您隐藏问题),因此您没有检测到您正在使用的两个地方(第二个字符是数字“1”)而不是(第二个字符是字母“l”)Option Explicit
x1PatternLinearGradient
xlPatternLinearGradient
评论
0赞
Notus_Panda
8/31/2023
啊好抓,在分区时甚至没有看到缺少的“结束......”
评论
With cell1.Interior.Gradient.ColorStops.Add(1)
缺少一个End With