Chào các bạn
Mình có tạo 1 cái code để tự trừ đi 1 giá trị, cụ thể là 100 đơn vị trong các ô đã chọn.
Nhưng với code mình tạo thì gặp các vấn đề sau, nhờ Anh em khắc phục giúp.
- Khi chọn lớn hơn 2 ô thì code chạy được
- Khi Chọn 1 ô ở bất kỳ đâu trong bảng mà chạy code thì toàn bộ vùng có dữ liệu đều chạy lệnh đều bị trừ đi 100 đơn vị.
Mình chỉ muốn các ô/ vùng được chọn mới có tác dụng khi chạy lệnh (kể cả chọn 1 ô), không chạy lệnh được khi ô chọn không có giá trị số.
Và sau khi chạy lệnh có thể sử dụng được chức năng Undo (Ctr+Z) như việc nhập số thông thường, hiện tại mình chạy lệnh thì không Undo được.
Mình chép code sau vào Module, và có sử dụng phím tắt để gọi lệnh.
Mình có tạo 1 cái code để tự trừ đi 1 giá trị, cụ thể là 100 đơn vị trong các ô đã chọn.
Nhưng với code mình tạo thì gặp các vấn đề sau, nhờ Anh em khắc phục giúp.
- Khi chọn lớn hơn 2 ô thì code chạy được
- Khi Chọn 1 ô ở bất kỳ đâu trong bảng mà chạy code thì toàn bộ vùng có dữ liệu đều chạy lệnh đều bị trừ đi 100 đơn vị.
Mình chỉ muốn các ô/ vùng được chọn mới có tác dụng khi chạy lệnh (kể cả chọn 1 ô), không chạy lệnh được khi ô chọn không có giá trị số.
Và sau khi chạy lệnh có thể sử dụng được chức năng Undo (Ctr+Z) như việc nhập số thông thường, hiện tại mình chạy lệnh thì không Undo được.
Mình chép code sau vào Module, và có sử dụng phím tắt để gọi lệnh.
Mã:
Sub SubtractTenFromSelectedArea()
Dim rng As Range
Dim cell As Range
Dim oldValue As Variant
Dim newValue As Variant
' Get the selected range
On Error Resume Next
Set rng = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
On Error GoTo 0
' Check if any range is selected
If Not rng Is Nothing Then
Application.ScreenUpdating = False
' Loop through each cell in the selected range
For Each cell In rng
oldValue = cell.Value
' Subtract 100 units if the cell contains a numeric value
If IsNumeric(oldValue) Then
newValue = oldValue - 100
cell.Value = newValue
End If
Next cell
Application.ScreenUpdating = True
Else
MsgBox "Please select a range containing numeric values to subtract 100 units.", vbExclamation
End If
End Sub