VBA将负面范围改为正面

Sel*_*rac 1 excel vba excel-vba

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

例如

rowStart = 10
rowEnd   = 20
Run Code Online (Sandbox Code Playgroud)

从这些我需要将此范围内的值更改为正数.我正在尝试以下但我收到一个错误:

Range("K" & rowStart & ":K" & rowEnd).Value = _
    Abs(Range("K" & rowStart & ":K" & rowEnd).Value)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:运行时错误'13':类型不匹配

关于如何使这项工作的任何想法?

Sco*_*ner 6

你不能以这种方式做到这一点.

循环:

For i = rowStart to rowEnd
    ActiveSheet.Range("K" & i).Value = Abs(ActiveSheet.Range("K" & i).Value)
Next i
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Evaluate设置它:

ActiveSheet.Range("K" & rowStart & ":K" & rowEnd).Value = Evaluate("INDEX(ABS(" & Range("K" & rowStart & ":K" & rowEnd).Address & "),)")
Run Code Online (Sandbox Code Playgroud)