我如何让它工作? 我到目前为止编写了这段代码:
Sub RemoveLoop()
Dim i As Long
For i = 6 To 15
If Range("B" + i) = "YES" Then
Range("C" + i + ":" + "P" + i).ClearContents
End If
Next i
End Sub
而不是像这样单独做每个: 以下是我试图缩短/完成的内容:
Sub Remove()
If Range("B6") = "YES" Then
Range("C6:P6").ClearContents
End If
If Range("B7") = "YES" Then
Range("C7:P7").ClearContents
End If
If Range("B8") = "YES" Then
Range("C8:P8").ClearContents
End If
If Range("B9") = "YES" Then
Range("C9:P9").ClearContents
End If
If Range("B10") = "YES" Then
Range("C10:P10").ClearContents
End If
If Range("B11") = "YES" Then
Range("C11:P11").ClearContents
End If
If Range("B12") = "YES" Then
Range("C12:P12").ClearContents
End If
If Range("B13") = "YES" Then
Range("C13:P13").ClearContents
End If
If Range("B14") = "YES" Then
Range("C14:P14").ClearContents
End If
If Range("B15") = "YES" Then
Range("C15:P15").ClearContents
End If
End Sub
简单的问题,谢谢你的帮助。 我不知道还有什么可说的,我相信这是非常直截了当的。但我仍然得到了,#34;看起来你最多的是代码错误。" 对于VBA专家来说,这应该很容易解决。
再次感谢。
答案 0 :(得分:2)
试试这个:
Sub RemoveLoop()
Dim i As Long
Set WSheet = Worksheets("Sheet1") ' This enables the change in the mentioned sheet and not the Active sheet.
For i = 6 To 15
If WSheet.Range("B" & i) = "YES" Then
WSheet.Range("C" & i & ":P" & i).ClearContents
End If
Next i
End Sub
答案 1 :(得分:0)
这是你可以做的,将单元格和范围作为变量传递:
Option Explicit
Sub RemoveLoop()
Dim i As Long
For i = 6 To 15
With Worksheets(1)
If UCase(.Range("B" & i)) = "YES" Then
.Range(.Cells(i, "C"), .Cells(i, "P")).ClearContents
End If
End With
Next i
End Sub
除了使用Range(Cells,Cells)
之外,代码引用了UCase
,这确保了"是"和"是"在专栏" B"是平等的。