Giúp sửa giúp đoạn code cho thỏa điều kiện mới chạy

Liên hệ QC

tlthlnmtnn

Thành viên mới
Tham gia
1/4/12
Bài viết
37
Được thích
2
Giúp em sửa lại đoạn code này tí
Code này nếu nhập số ở cột B nó sẽ + vào số ở cột B-1 và gán vào cột B, các cột C E D F G sẽ copy y chang từ dòng trên xuống, nhưng nó có nhược điểm nếu nhập số + khoảng trắng + chữ nó vẫn chạy, mà mình ko muốn nó chạy theo kiểu đó, xin giúp mình chỉnh lại nha.

có 3 điều mình không muốn nó chạy.
1: chỉ chạy trong giới hạn từ -9 đến 9, cao hơn ko chạy
2: nếu có khoảng trắng đằng sau số, cũng ko chạy
3: nếu có chữ đằng sau cũng sẽ ko chạy
VD của trường hợp 3: 123 AM
Ý tưởng của mình là thế này: khi nhập vào cột B, nó sẽ lấy từ phải qua 1 ký tự rồi so sánh với điều kiện
nếu có cách khác mà chạy tốt cũng đc
Thanks mọi người nhiều vì mình ko biết lập trình loại này nên mới phải nhờ hoài
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.DisplayAlerts = FalseIf InStr(1, Target.Value, "/") > 0 Then Exit Sub
If Not Intersect(Range("B2:B1000"), Target) Is Nothing Then  
If Target.Offset(-1).Value = "" Then Exit Sub  
so = CDbl(Left(Target.Offset(-1).Value, InStr(1, Target.Offset(-1).Value, "/") - 1)) + Target.Value  
chu = Right(Target.Offset(-1).Value, Len(Target.Offset(-1).Value) - InStr(1, Target.Offset(-1).Value, "/") + 1) 
Target.Value = so & chu 
Range("C" & Target.Row & ":G" & Target.Row).Value = Range("C" & Target.Row - 1 & ":G" & Target.Row - 1).Value
End If
Application.DisplayAlerts = True
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Giúp em sửa lại đoạn code này tí
Code này nếu nhập số ở cột B nó sẽ + vào số ở cột B-1 và gán vào cột B, các cột C E D F G sẽ copy y chang từ dòng trên xuống, nhưng nó có nhược điểm nếu nhập số + khoảng trắng + chữ nó vẫn chạy, mà mình ko muốn nó chạy theo kiểu đó, xin giúp mình chỉnh lại nha.

có 3 điều mình không muốn nó chạy.
1: chỉ chạy trong giới hạn từ -9 đến 9, cao hơn ko chạy
2: nếu có khoảng trắng đằng sau số, cũng ko chạy
3: nếu có chữ đằng sau cũng sẽ ko chạy
VD của trường hợp 3: 123 AM
Ý tưởng của mình là thế này: khi nhập vào cột B, nó sẽ lấy từ phải qua 1 ký tự rồi so sánh với điều kiện
nếu có cách khác mà chạy tốt cũng đc
Thanks mọi người nhiều vì mình ko biết lập trình loại này nên mới phải nhờ hoài
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.DisplayAlerts = FalseIf InStr(1, Target.Value, "/") > 0 Then Exit Sub
If Not Intersect(Range("B2:B1000"), Target) Is Nothing Then  
If Target.Offset(-1).Value = "" Then Exit Sub  
so = CDbl(Left(Target.Offset(-1).Value, InStr(1, Target.Offset(-1).Value, "/") - 1)) + Target.Value  
chu = Right(Target.Offset(-1).Value, Len(Target.Offset(-1).Value) - InStr(1, Target.Offset(-1).Value, "/") + 1) 
Target.Value = so & chu 
Range("C" & Target.Row & ":G" & Target.Row).Value = Range("C" & Target.Row - 1 & ":G" & Target.Row - 1).Value
End If
Application.DisplayAlerts = True
End Sub
1. Nếu bạn nhập số có chữ ở sau với code trên nó đâu có chạy
2. Nếu nhập số có ký tự trộng ở sau thì khi enter nó tự động cắt ký tự trống đó, nếu bạn chuyển qua format dạng text thì mới có ký tự trống. Bạn muốn có ký tự trống sau số để code không chạy bạn có thể nói mục đích để làm gì không, biết đâu có giải pháp khác chứ ai đi nhập kiểu đó?
 
1. Nếu bạn nhập số có chữ ở sau với code trên nó đâu có chạy
2. Nếu nhập số có ký tự trộng ở sau thì khi enter nó tự động cắt ký tự trống đó, nếu bạn chuyển qua format dạng text thì mới có ký tự trống. Bạn muốn có ký tự trống sau số để code không chạy bạn có thể nói mục đích để làm gì không, biết đâu có giải pháp khác chứ ai đi nhập kiểu đó?
2. có thể bỏ cũng ko sao.
1. Nếu nhập 123 AM nó xuất ra /TB.CCT và copy dòng trên xuống trong khi mình muốn nó vẫn giữ nguyên 123 AM để nhập tiếp
 
2. có thể bỏ cũng ko sao.
1. Nếu nhập 123 AM nó xuất ra /TB.CCT và copy dòng trên xuống trong khi mình muốn nó vẫn giữ nguyên 123 AM để nhập tiếp
Bạn thêm lệnh này vào code (trước If đầu tiên)
Mã:
If Not IsNumeric(CDbl(Target.Value)) Then Exit Sub
 
Thanks nhưng chỉ mới giải quyết đc điều kiện 3 của mình còn điều kiện
1: chỉ chạy trong giới hạn từ -9 đến 9, cao hơn hay thấp hơn ko chạy
Giúp mình cái đó lun nha
 
Thanks nhưng chỉ mới giải quyết đc điều kiện 3 của mình còn điều kiện
1: chỉ chạy trong giới hạn từ -9 đến 9, cao hơn hay thấp hơn ko chạy
Giúp mình cái đó lun nha
Thêm tiếp
Mã:
If CDbl(Target.Value) < -9 Or CDbl(Target.Value) > 9 Then Exit Sub
 
Web KT

Bài viết mới nhất

Back
Top Bottom