我希望我的工作表中的列更改为负数,因为此列表示“缺货” .
我从下面的链接获得了代码,它将给定范围的值更改为负值:
https://www.extendoffice.com/documents/excel/677-excel-change-positive-numbers-to-negative.html
但问题是这需要用户的互动 .
Code:
Sub ChangeToNegative()
'Updateby20131113
Dim rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set WorkRng = WorkRng.SpecialCells(xlCellTypeConstants, xlNumbers)
For Each rng In WorkRng
xValue = rng.Value
If xValue > 0 Then
rng.Value = xValue * -1
End If
Next
End Sub
然后我发现将代码放在工作表本身并命名sub Change(ByVal Target As Range)
,它将在您使用时更新所选范围 .
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim WorkRng As Range
On Error Resume Next
Set WorkRng = Application.Selection
Set WorkRng = WorkRng.SpecialCells(xlCellTypeConstants, xlNumbers)
If Target.Address = WorkRng Then
For Each rng In WorkRng
xValue = rng.Value
If xValue > 0 Then
rng.Value = xValue * -1
End If
Next
End If
End Sub
这很好用,但它意味着无论我点击哪个单元格并键入数字,它都将是负数 .
所以我没有使用 Application.Selection
,而是想给它一个特定的范围 - 但是可以改变 .
-
因此,仅当单元格
C5:C143
中有文本时,单元格F5:F143
才应为负数 -
如果我删除
C5:C143
之间的任何单元格,则应相应地更新范围 .
也许范围可以基于 C4
和 C144
中的文本 - 所以列 F
中这两个文本单元格之间的任何内容都是负数?
1 回答
我添加了大量的注释来解释代码的作用 .