Я хочу, чтобы столбец в моей рабочей таблице был изменен на отрицательные числа, так как этот столбец представляет "запас".
Я получил код по приведенной ниже ссылке, который изменит значения данного диапазона на отрицательные:
https://www.extendoffice.com/documents/excel/677-excel-change-positive-numbers-to-negative.html
Но проблема в том, что для этого потребуется взаимодействие с пользователем.
Код:
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
Затем я обнаружил, что поместил код в сам лист и назову суб Change(ByVal Target As Range)
, который будет обновлять выбранный диапазон по мере его использования.
Код:
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
будет отрицательным числом?