VBA宏在特定工作表上运行

时间:2017-10-18 20:53:12

标签: excel excel-vba vba

我希望只为特定工作表运行一个宏。宏的目的是查找指定的范围并找到负值,如果有任何可以将整行提取到新工作表中,同时将这些否定值转换为正数。我想出了一些,但我确信这是完全错误的......错过了很多东西。还在努力学习,对这个vba的新东西。提前感谢您提供的任何帮助。 fyi ntp代表负面因素。不知道这是否会有所帮助,只是想我可以将所有细节写入我的小代码"

Sub ntp()
Dim ws As Worksheet
If ws.Name <> "originalNeg" Then
    For Each Cell In Range("I2:I1048576")
        If Cell.Value < 0 Then
            Cell.Value = Abs(Cell.Value)
        End If
    Next Cell

End Sub

2 个答案:

答案 0 :(得分:1)

Sub ntp()
Dim ws      As Worksheet
Dim cel     As Range
With Activeworkbook.Worksheets("originalNeg")
    For Each cel In .Range("I2:I" & .Range("I" & Rows.Count).End(xlUp).row)
        If cel.Value < 0 Then cel.Value = Abs(cel.Value)
    Next cel
End With
End Sub

这使用工作表,并注意.之前的Range(),它将范围与特定工作表相关联。

此外,您很少想要在列中使用所有单元格。我使用.End(xlUp).Row来获取第一列中最后一行,供您循环使用。

答案 1 :(得分:0)

Set ws = ThisWorkbook.Worksheets("originalNeg") 

而不是名字上的if。