如何強制Excel中的任何數字轉換爲負數?如何強制Excel中的任何輸入值轉換爲負數
例如,如果用戶在A1中輸入-10,則它不應該執行任何操作,如果輸入10,那麼它應該將* -1轉換爲負數。
我已經將以下自定義單元格格式應用於整個工作表:#,## 0.00_;(#,## 0.00)表示任何負數都顯示在括號中。但是A1只能包含一個負數,所以我希望它在用戶輸入正數時自動轉換爲負數。
我該怎麼做?
如何強制Excel中的任何數字轉換爲負數?如何強制Excel中的任何輸入值轉換爲負數
例如,如果用戶在A1中輸入-10,則它不應該執行任何操作,如果輸入10,那麼它應該將* -1轉換爲負數。
我已經將以下自定義單元格格式應用於整個工作表:#,## 0.00_;(#,## 0.00)表示任何負數都顯示在括號中。但是A1只能包含一個負數,所以我希望它在用戶輸入正數時自動轉換爲負數。
我該怎麼做?
包括在工作表中的代碼區域中的以下事件宏:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A1 As Range
Set A1 = Range("A1")
If Intersect(Target, A1) Is Nothing Then Exit Sub
If IsNumeric(A1) Then
If A1 < 0 Then Exit Sub
Application.EnableEvents = False
A1 = -A1
Application.EnableEvents = True
End If
End Sub
與數據驗證,也不會拒絕積極的投入,它只會使它消極。
編輯#1:
因爲它是工作表的代碼,它是非常容易安裝和自動使用:
如果您有任何疑慮,請先在試用工作表上嘗試。
如果保存工作簿,宏將與其一起保存。 如果您在2003年以後使用的是Excel版本,則必須將該文件保存爲.xlsm而非 。XLSX
要刪除宏:
要了解更多關於宏一般,參見:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解更多有關事件宏(工作表的代碼),請參閱:
http://www.mvps.org/dmcritchie/excel/event.htm
宏必須爲此工作啓用!
編輯#2:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim negatives As Range, r As Range, rLOOK As Range
Set negatives = Range("negatives")
Set rLOOK = Intersect(negatives, Target)
If rLOOK Is Nothing Then Exit Sub
For Each r In rLOOK
If IsNumeric(r) Then
If r > 0 Then
Application.EnableEvents = False
r.Value = -r.Value
Application.EnableEvents = True
End If
End If
Next r
End Sub
這裏我們:
您需要在Worksheet_Change事件中使用vba。 –
難道你不能只使用數據驗證只允許一個整數(或十進制)小於0? –