Excel 如果值为负值,则清除范围内的单元格内容

Excel 如果值为负值,则清除范围内的单元格内容,excel,vba,if-statement,Excel,Vba,If Statement,如果单元格的值为负值,我将使我的宏能够清除单元格。 特别是,宏应该清除H列到K列中的所有负单元格,直到A列中的最后一行 我尝试了在网上找到的这段代码,但我真的不知道如何将它扩展到I到K列(仅适用于H列) Dim LC1为长,ColNum1为长 Application.ScreenUpdating=False 对于ColNum1=8的单元格(1,Columns.Count).End(xlToLeft).Column 对于LC1=2到单元格(Rows.Count,ColNum1)。结束(xlUp)。

如果单元格的值为负值,我将使我的宏能够清除单元格。 特别是,宏应该清除H列到K列中的所有负单元格,直到A列中的最后一行

我尝试了在网上找到的这段代码,但我真的不知道如何将它扩展到I到K列(仅适用于H列)

Dim LC1为长,ColNum1为长
Application.ScreenUpdating=False
对于ColNum1=8的单元格(1,Columns.Count).End(xlToLeft).Column
对于LC1=2到单元格(Rows.Count,ColNum1)。结束(xlUp)。行
如果Val(CStr(Cells(LC1,ColNum1))小于0,则Cells(LC1,ColNum1)=0
下一个立法会一题
下一个ColNum1
Application.ScreenUpdating=True
我试图复制每次将ColNum#值更改为9、10和11时的代码,但它不起作用。为什么?

这应该可以:

' Get last row of col A...
Dim lastRow as long, r As Long, c As Long
Range("A1").select
lastRow = Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row

For r = 2 To lastRow
For c = 8 To 11

    If IsNumeric(Cells(r, c)) Then
        If Cells(r, c) < 0 Then
            Cells(r, c).ClearContents
        End If
    End If     

Next
Next
获取列的最后一行。。。 变暗最后一行为长,r为长,c为长 范围(“A1”)。选择 lastRow=单元格。查找(“*”,搜索顺序:=xlByRows,搜索方向:=xlPrevious)。行 对于r=2到最后一行 对于c=8到11 如果是数字(单元格(r,c)),则 如果单元格(r,c)<0,则 细胞(r,c)。透明内容物 如果结束 如果结束 下一个 下一个 这应该可以:

' Get last row of col A...
Dim lastRow as long, r As Long, c As Long
Range("A1").select
lastRow = Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row

For r = 2 To lastRow
For c = 8 To 11

    If IsNumeric(Cells(r, c)) Then
        If Cells(r, c) < 0 Then
            Cells(r, c).ClearContents
        End If
    End If     

Next
Next
获取列的最后一行。。。 变暗最后一行为长,r为长,c为长 范围(“A1”)。选择 lastRow=单元格。查找(“*”,搜索顺序:=xlByRows,搜索方向:=xlPrevious)。行 对于r=2到最后一行 对于c=8到11 如果是数字(单元格(r,c)),则 如果单元格(r,c)<0,则 细胞(r,c)。透明内容物 如果结束 如果结束 下一个 下一个
我首先建议您为要转到的列和行创建一个变量,这样可以是一个单独的行,并使for循环更加清晰。当你说它不工作时,是否产生了错误?这些值没有发生变化吗?它会用“1000000”来代替一切吗?等等。我首先建议您为要转到的列和行创建一个变量,这样可以是一个单独的行,并使for循环更加清晰。当你说它不工作时,是否产生了错误?这些值没有发生变化吗?它会用“1000000”来代替一切吗?等