Vba 使用循环清除内容

Vba 使用循环清除内容,vba,excel,Vba,Excel,我编写了以下代码来检查A行中的值是否等于Forecast then Range D5:D53的内容是否应该被清除 第1行是一个vlookup,因此有一个公式可以导出实际值或预测值 Dim k As Integer For k = 1 To 13 If Sheets("2017 Forecast").Cells(k, 1).Value = "Forecast" Then Sheets("2017 Forecast").Range("D5:D53").Select.Clea

我编写了以下代码来检查A行中的值是否等于Forecast then Range D5:D53的内容是否应该被清除

第1行是一个vlookup,因此有一个公式可以导出实际值或预测值

Dim k As Integer

For k = 1 To 13
    If Sheets("2017 Forecast").Cells(k, 1).Value = "Forecast" Then
        Sheets("2017 Forecast").Range("D5:D53").Select.ClearContents
    End If
Next k

也许这对你有用

Option explicit

Sub Compare skies()

Dim k As long
Dim ValueRead as variant

With Sheets("2017 Forecast")
For k = 1 To 13

ValueRead = .Cells(k, 1).Value

' Slow, case insensitive string comparison '
If strcomp(ValueRead,"Forecast",vbtextcompare) = 0 Then
    .Range("D5:D53").ClearContents ' You want to clear the exact same range 13 times? '
Elseif strcomp(ValueRead,"Actual",vbtextcompare) <> 0 then
Msgbox("VLOOKUP returned a value outside of Actual and Forecast")

End if

Next k
End with

End sub
在使用ClearContent之前,不需要使用Select

也可以尝试添加UCASE,以确保在正文的中间没有任何大写字母。 代码


对不起,我应该澄清第3行的代码错误,即它没有清除内容…只需删除。选择-没有理由在那里-只需使用Sheets2017 Forecast。范围5:D53.ClearContents您提到的是A行。您是指A列还是第1行?一旦你修复了Select的错误,你的代码就会出现在A列。这就是你想要的吗?如果不是,这也许可以解释为什么当您将代码更改为只查看单元格A4时,它不起作用-因为您在单元格D1中有预测。
Dim k As Integer

With ThisWorkbook.Sheets("2017 Forecast")
    For k = 1 To 13
        If UCase(.Cells(k, 1).Value2) = "FORECAST" Then
            .Range("D5:D53").ClearContents
        End If
    Next k
End With