emconnhaxd
Thành viên chính thức


- Tham gia
- 10/1/10
- Bài viết
- 51
- Được thích
- 0
Mình đã sử dụng được file diễn giải nhưng lại mắc ở phần sau dấu bằng chuyển sang bôi đỏ. mong ad trợ giúp

Chỉ giúp mình được khôngCái này dễ thôi mà bạn!
E là không thể vì chẳng biết code của bạn thế nào!Chỉ giúp mình được không
Không hiểu sao mình không up file lên được
Code đó nè bạnE là không thể vì chẳng biết code của bạn thế nào!
Chữ màu xanh đỏ tím vàng gì ... in ra cũng thành màu đen hết mà lại còn bị mờ nữa + không lẽ bạn in màu file dự toán?Mình đã sử dụng được file diễn giải nhưng lại mắc ở phần sau dấu bằng chuyển sang bôi đỏ. mong ad trợ giúp
Chữ màu đỏ sẽ dễ hơn trong khi mình kiểm soát các khối lượngChữ màu xanh đỏ tím vàng gì ... in ra cũng thành màu đen hết mà lại còn bị mờ nữa + không lẽ bạn in màu file dự toán?
Code #5 là của bạn HungQuoc49. Chắc chỉnh được định dạng kết quả xuất ra nhưng tôi không biết code, hehe
Bạn chạy thử code sau:Chữ màu đỏ sẽ dễ hơn trong khi mình kiểm soát các khối lượng![]()
Sub Tomau()
Dim cll As Range
For Each cll In Range("C8:C22")
If InStr(cll, "=") Then
cll.Characters(InStr(cll, "=") + 1, Len(cll)).Font.Color = vbRed
End If
Next
End Sub
Range("E" & Dau).Value = Tam
'Them doan code sau thu coi
Range("E" & Dau).Characters(InStr(Range("E" & Dau).value, "=") + 1, Len(Range("E" & Dau).value)).Font.Color = vbRed
End If
Application.EnableEvents = True
End Sub
Không được bạn ơi, của Vu-Tuan-manh-Linh cũng không đượcBạn chạy thử code sau:
Mã:Sub Tomau() Dim cll As Range For Each cll In Range("C8:C22") If InStr(cll, "=") Then cll.Characters(InStr(cll, "=") + 1, Len(cll)).Font.Color = vbRed End If Next End Sub
Không được chỗ nào vậy bạn? File bạn đâu, gửi xem thử nhé.Không được bạn ơi, của Vu-Tuan-manh-Linh cũng không được
Đây nè bạn, mình thử không đượcKhông được chỗ nào vậy bạn? File bạn đâu, gửi xem thử nhé.
Bạn nói thế nào vậy? cũng chính file của bạn mình tải về và chạy code file của bạn luôn đúng hoàn toàn mà.Đây nè bạn, mình thử không được
Code trong file có dòng:Đây nè bạn, mình thử không được
Mình không thấy được, mình gửi ảnh nè. không phải do C8 đến 22, vì từ 8 đến 22 đâu đượcCode trong file có dòng:
For Each cll In Range("C8:C22")
...
Code chỉ làm việc từ C8:C22, các dòng dưới "KHÔNG ĐƯỢC" là phải rồi.
Bạn sửa thành C8:C2000 thử xem sao.
Vậy bạn thay đoạn code trong file thành đoạn code dưới đây.Mình vào trong code rồi Run thì thấy bôi đỏ, vậy không phải tự động rồi, mình cần khi mình đánh dấu bằng là phía sau tự động phải bôi đỏ rồi
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 And Target.Column = 3 Then
If InStr(Target, "=") Then Target.Characters(InStr(Target, "=") + 1, Len(Target)).Font.Color = vbRed
End If
End Sub
Khó có thể làm như bạn, theo bạn miêu tả thì đó là sự kiện keydown, mà trong worksheet thì làm gì có sự kiện này, có chăng là dùng sự kiện change, có nghĩa là khi cập nhập xong giá trị trong cell, sang cell khác, lúc đó mới tiến hành chạy code.Mình vào trong code rồi Run thì thấy bôi đỏ, vậy không phải tự động rồi, mình cần khi mình đánh dấu bằng là phía sau tự động phải bôi đỏ rồi
Chính xác thì lập Dự toán như hình dưới này bạn. Nhập cấu kiện + kích thước xong (sau chữ 0,22) nhấn Enter là ra kết quả là ' = 12,298'. Trước và sau dấu bằng có 1 dấu cách.Khó có thể làm như bạn, theo bạn miêu tả thì đó là sự kiện keydown, mà trong worksheet thì làm gì có sự kiện này, có chăng là dùng sự kiện change, có nghĩa là khi cập nhập xong giá trị trong cell, sang cell khác, lúc đó mới tiến hành chạy code.
Thì bạn nên biến tấu theo code trên của tôi là được mà.Chính xác thì lập Dự toán như hình dưới này bạn. Nhập cấu kiện + kích thước xong (sau chữ 0,22) nhấn Enter là ra kết quả là ' = 12,298'. Trước và sau dấu bằng có 1 dấu cách.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Value <> "" And InStr(Target.Value, "=") Then
Target.Characters(InStr(Target.Value, "=") + 1, Len(Target.Value)).Font.Color = vbRed
End If
End Sub
Nhìn code dài thòng, đâu nhất thiết phải thế. Test thử thấy nó cắt bỏ người ta hết 1 kí tự???File này hy vọng đúng ý chủ thớt!!
Mình đã làm được nhờ code của bạn, thank nhéDể như ăn cơm vậy mà:
Chép code vào là được
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 And Target.Value <> "" And InStr(Target.Value, "=") Then Target.Characters(InStr(Target.Value, "=") + 1, Len(Target.Value)).Font.Color = vbRed End If End Sub
Còn một lỗi code của bạn, nếu dấu = không phải phép tính thì nó lạ tự xóa ký tự phía sau:Dể như ăn cơm vậy mà:
Chép code vào là được
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 And Target.Value <> "" And InStr(Target.Value, "=") Then Target.Characters(InStr(Target.Value, "=") + 1, Len(Target.Value)).Font.Color = vbRed End If End Sub
Đúng là code ngắn nhưng chưa đủ.Dể như ăn cơm vậy mà:
Chép code vào là được
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 And Target.Value <> "" And InStr(Target.Value, "=") Then Target.Characters(InStr(Target.Value, "=") + 1, Len(Target.Value)).Font.Color = vbRed End If End Sub
Chỉ là tô màu thôi, đâu có xóa gì đâu bạn?Còn một lỗi code của bạn, nếu dấu = không phải phép tính thì nó lạ tự xóa ký tự phía sau:
Xử lý như vậy thì không ổn. Nếu người ta chọn A1:B1 rồi xóa cũng bị lỗi. Hơn nữa nếu người ta copy dữ liệu ở đâu đó dán vào cột C thì cũng phải tô màu cho người ta chứ.Chỉ là tô màu thôi, đâu có xóa gì đâu bạn?
@huuthang_bd: Cám ơn bạn, mình them (If Target.Rows.Count > 1 Then ... ) vào để xử lí nó.
Đoạn code này là tại #5 của chủ thớt. Tôi chỉ thêm câu lệnh để đánh dấu màu đỏ sau dấu = sau khi thêm dòng tính toán và enter. Cắt ký tự trắng trước và sau dấu = không ảnh hưởng đến kết quả. Nếu chủ thớt muốn thì vẫn làm được thôi.Nhìn code dài thòng, đâu nhất thiết phải thế. Test thử thấy nó cắt bỏ người ta hết 1 kí tự???
Vậy nhờ bạn xử lí ca này giúp nhé.Xử lý như vậy thì không ổn. Nếu người ta chọn A1:B1 rồi xóa cũng bị lỗi. Hơn nữa nếu người ta copy dữ liệu ở đâu đó dán vào cột C thì cũng phải tô màu cho người ta chứ.
Tôi thì tôi làm vầyVậy nhờ bạn xử lí ca này giúp nhé.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Cll As Range, Pos As Long
On Error Resume Next
Set Rng = Intersect(Columns(3), Target)
If Not Rng Is Nothing Then
For Each Cll In Rng
Pos = InStr(Cll.Value, "=")
If Pos > 0 Then Cll.Characters(Pos + 1, Len(Cll.Value) - Pos).Font.Color = vbRed
Next
End If
End Sub