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
错误是什么?你能找到并替换任何连字符吗?错误是什么?你能找到并替换任何连字符吗?很好的求值。很好的求值。