VBA将负值范围更改为正值

VBA将负值范围更改为正值,vba,excel,Vba,Excel,我试图根据动态范围将负值改为正值。动态的意思是行号可能会改变 比如说 rowStart = 10 rowEnd = 20 根据这些,我需要将这个范围内的值改为正值。我正在尝试以下操作,但出现错误: Range("K" & rowStart & ":K" & rowEnd).Value = _ Abs(Range("K" & rowStart & ":K" & rowEnd).Value) 我得到的错误是:运行时错误“13”:类型不匹

我试图根据动态范围将负值改为正值。动态的意思是行号可能会改变

比如说

rowStart = 10
rowEnd   = 20
根据这些,我需要将这个范围内的值改为正值。我正在尝试以下操作,但出现错误:

Range("K" & rowStart & ":K" & rowEnd).Value = _
    Abs(Range("K" & rowStart & ":K" & rowEnd).Value)
我得到的错误是:运行时错误“13”:类型不匹配

关于如何使这项工作有效,你有什么想法吗?

试试这个:

rowStart = 10
rowEnd = 20
For Each myCell In Range("K" & rowStart & ":K" & rowEnd)
    myCell.Value = Abs(myCell.Value)
Next
试试这个:

rowStart = 10
rowEnd = 20
For Each myCell In Range("K" & rowStart & ":K" & rowEnd)
    myCell.Value = Abs(myCell.Value)
Next

你不能完全那样做

任一循环:

For i = rowStart to rowEnd
    ActiveSheet.Range("K" & i).Value = Abs(ActiveSheet.Range("K" & i).Value)
Next i
或者,您可以使用“评估”进行设置:

ActiveSheet.Range("K" & rowStart & ":K" & rowEnd).Value = Evaluate("INDEX(ABS(" & Range("K" & rowStart & ":K" & rowEnd).Address & "),)")

你不能完全那样做

任一循环:

For i = rowStart to rowEnd
    ActiveSheet.Range("K" & i).Value = Abs(ActiveSheet.Range("K" & i).Value)
Next i
或者,您可以使用“评估”进行设置:

ActiveSheet.Range("K" & rowStart & ":K" & rowEnd).Value = Evaluate("INDEX(ABS(" & Range("K" & rowStart & ":K" & rowEnd).Address & "),)")
您必须在以下项目上循环:

您必须在以下项目上循环:


您的数字格式是否允许简单地删除负号,即连字符


您的数字格式是否允许简单地删除负号,即连字符


如果项目范围较大,则将其放置在数组中并在项目上循环可能比更新范围快:

Sub Test()

    Dim rowStart As Long, rowEnd As Long
    Dim rRange As Range
    Dim vRange() As Variant
    Dim vItem As Variant
    Dim R As Long

    rowStart = 10
    rowEnd = 20

    With Sheet1
        'Define the range.
        Set rRange = .Range(.Cells(rowStart, 1), .Cells(rowEnd, 1))
    End With
    vRange = rRange

    'Loop through the values - consider R to mean Row.
    For R = 1 To UBound(vRange, 1)
        vRange(R, 1) = Abs(vRange(R, 1))
    Next R

    rRange.Value = vRange

End Sub

如果项目范围较大,则将其放置在数组中并在项目上循环可能比更新范围快:

Sub Test()

    Dim rowStart As Long, rowEnd As Long
    Dim rRange As Range
    Dim vRange() As Variant
    Dim vItem As Variant
    Dim R As Long

    rowStart = 10
    rowEnd = 20

    With Sheet1
        'Define the range.
        Set rRange = .Range(.Cells(rowStart, 1), .Cells(rowEnd, 1))
    End With
    vRange = rRange

    'Loop through the values - consider R to mean Row.
    For R = 1 To UBound(vRange, 1)
        vRange(R, 1) = Abs(vRange(R, 1))
    Next R

    rRange.Value = vRange

End Sub

错误是什么?你能找到并替换任何连字符吗?错误是什么?你能找到并替换任何连字符吗?很好的求值。很好的求值。