minhhangg
Thành viên hoạt động



- Tham gia
- 4/5/11
- Bài viết
- 197
- Được thích
- 61
Vẫn còn bị lỗi anh à.Sử chỗ màu đỏ lại, xem thử code
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("B7:B91")) Is Nothing Then
Target.Value = Application.WorksheetFunction.Proper(Target.Value)
Application.EnableEvents = True
End If
End Sub
Không ok đâu anh à. Anh bật nút Caps Lock nhập dữ liệu vào vùng B7:B91 và Enter thử xem nhé.Thử code này xem bạn, mình test thấy ok
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, [B7:B91]) Is Nothing Then
Target.Value = Application.WorksheetFunction.Proper(Target.Value)
Application.EnableEvents = True
End If
End Sub
Đâu anh nhập tên này thử xem: NGUYỄN LÝ TƯỞNG. Dạ đúng là chữ hoa đầu mỗi chữ nhưng nó lỗi như trong hình ạ.Mình bật caplock và đánh chữ toàn in hoa thì nó vẫn chuyển thành chữ hoa đầu mỗi chữ đúng mà bạn. không hiểu??????
Dạ em muốn dùng code chị ạ. Em có dùng code này nhưng còn bị lỗi.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("B7:B91")) Is Nothing Then
Target.Value = Application.Proper(Application.Trim(Target.Value))
Application.EnableEvents = True
End If
End Sub
Application.EnableEvents = False
If ... Then
...
mot loat code
End If
Application.EnableEvents = True
If ... Then
Application.EnableEvents = False
... mot loat code
Application.EnableEvents = True
End If
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B7:B91")) Is Nothing Then
Application.EnableEvents = False
Target.Value = Dautu_Hoa_Thuong(Target.Value, ma_uni, dautu_thuong)
Application.EnableEvents = True
End If
End Sub
Dạ em thấy code của anh thấy ổn về chữ hoa đầu từ rồi, tuy nhiên lại phát sinh ra lỗi là người dùng: Copy danh sách hoặc delete danh sách thì báo lỗi. Anh giúp tiếp em nhé. Cảm ơn anh nhiều nhiều.Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B7:B91")) Is Nothing Then
Application.EnableEvents = False
Target.Value = Dautu_Hoa_Thuong(Target.Value, ma_uni, dautu_thuong)
Application.EnableEvents = True
End If
End Sub
Code tôi viết nếu nói về unicode thì tôi có thể chắc là luôn đúng. Về mã Vni và TCVN3 thì tôi không nghiên cứu kỹ vì tôi không ủng hộ các mã Việt.
Dạ em thấy code của anh thấy ổn về chữ hoa đầu từ rồi, tuy nhiên lại phát sinh ra lỗi là người dùng: Copy danh sách hoặc delete danh sách thì báo lỗi. Anh giúp tiếp em nhé. Cảm ơn anh nhiều nhiều.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, colB As Range
Set colB = Application.Intersect(Target, Range("B7:B91"))
If Not colB Is Nothing Then
Application.EnableEvents = False
For Each rng In colB
rng.Value = Dautu_Hoa_Thuong(rng.Value, ma_uni, dautu_thuong)
Next
Application.EnableEvents = True
End If
End Sub
Anh siwtom ơi! Code mình đang nhập là vùng B7:B91, giả sử như mình nhập nhiều vùng khác nhau thì sao anh há.Bạn gửi tập tin có dữ liệu và hướng dẫn từng bước thao tác để đi tới "báo lỗi" nhé.
------------
À hiểu rồi. Khi Paste nhiều dòng đồng thời hoặc xóa nhiều dòng đồng thời. Vì lúc đó Target không là 1 cell đơn lẻ.
Bạn thử test lại xem sao.
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, colB As Range Set colB = Application.Intersect(Target, Range("B7:B91")) If Not colB Is Nothing Then Application.EnableEvents = False For Each rng In colB rng.Value = Dautu_Hoa_Thuong(rng.Value, ma_uni, dautu_thuong) Next Application.EnableEvents = True End If End Sub
Anh siwtom ơi! Code mình đang nhập là vùng B7:B91, giả sử như mình nhập nhiều vùng khác nhau thì sao anh há.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, colB As Range
Set colB = Application.Intersect(Target, [COLOR=#ff0000]Union([B7:B91], [D2:G10])[/COLOR])
If Not colB Is Nothing Then
Application.EnableEvents = False
For Each rng In colB
rng.Value = Dautu_Hoa_Thuong(rng.Value, ma_uni, dautu_thuong)
Next
Application.EnableEvents = True
End If
End Sub
Union(vung1, vung2, ..., vungn)
Làm phiền anh chút nữa nhé, do có người hỏi tại đây http://www.giaiphapexcel.com/forum/...ên-sang-cột-khác-còn-họ-và-tên-đệm-giữ-nguyên
Em cũng muốn học hỏi nữa, khi mình viết tên xong thì tự tách tên sang cột C chẳng hạn và giữ lại Họ - chữ lót, mong anh giúp dùm nhé. Cảm ơn anh nhiều nhiều.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, colB As Range, Text As String, pos As Long
Set colB = Application.Intersect(Target, [A1:A1000])
If Not colB Is Nothing Then
Application.EnableEvents = False
For Each rng In colB
Text = Dautu_Hoa_Thuong(rng.Value, ma_uni, dautu_thuong)
pos = InStrRev(Text, " ")
If pos > 0 Then
rng.Value = Left(Text, pos - 1)
rng.Offset(, 1).Value = Right(Text, Len(Text) - pos)
Else
rng.Value = Text
End If
Next
Application.EnableEvents = True
End If
End Sub
Text = Trim(Text)
Text = WorksheetFunction.Trim(Text)
Tôi quên không nói. Trong hàm Dautu_Hoa_Thuong ngay ở đầu bạn thay
Code:
Text = Trim(Text)
thành
Code:
Text = WorksheetFunction.Trim(Text)
To anh Siwtom:Em chưa hiểu ý anh thay đoạn code sau là sao , anh giải thích giùm với
Trong bài đầu tiên tôi có đính kèm module và trong đó có hàm Dautu_Hoa_Thuong mà ở đầu có dòng Text = Trim(Text)
Ý em muốn hỏi là 2 Hàm này có gì khác nhau mà anh lại bỏ Hàm của VB và thay thế bằng Hàm của WorksheetFunction cơ. Em nghĩ việc thay thế là có dụng ý của anh.