Tự động in hoa chữ cái đầu tiên sau dấu cách

Liên hệ QC

thanchetvnt

Thành viên chính thức
Tham gia
28/7/08
Bài viết
72
Được thích
21
Ai biết chỉ dùm code để khi gõ vào textbox họ và tên 1 người nào đó ở dạng gõ chữ thường (ví dụ nguyễn văn a) thì sẽ tự động chuyển thành chữ in hoa các chữ cái đầu (Nguyễn Văn A).
Xin cảm ơn rất nhiều.
 
Ai biết chỉ dùm code để khi gõ vào textbox họ và tên 1 người nào đó ở dạng gõ chữ thường (ví dụ nguyễn văn a) thì sẽ tự động chuyển thành chữ in hoa các chữ cái đầu (Nguyễn Văn A).
Xin cảm ơn rất nhiều.

Bạn làm thế này nhé:

Private Sub TextBox1_Change()
Dim a
a = Application.Proper(TextBox1.Value)
TextBox1.Value = a
End Sub
 
Upvote 0
Bạn làm thế này nhé:

Private Sub TextBox1_Change()
Dim a
a = Application.Proper(TextBox1.Value)
TextBox1.Value = a
End Sub

Không được đâu nha bạn! Làm như vậy đúng nhưng chưa chính xác! Bạn thử chuyển sang chế độ CAPS LOCK xem sao, sẽ thấy lỗi ngay!

Cần phải có một hàm chuyển sang kiểu PROPER trong VBA mới có thể thực hiện được điều này.

Hàm như sau:

PHP:
Function VBAProper(ByVal MyText As String) As String
    Dim i As Long
    On Error Resume Next
    If Trim(MyText) <> "" And Not (IsNumeric(MyText)) Then
        If Len(MyText) = 1 Then
            VBAProper = UCase(MyText)
        Else
            MyText = UCase(Left(MyText, 1)) & LCase(Mid(MyText, 2, Len(MyText)))
            For i = 2 To Len(MyText)
                If UCase(Mid(MyText, i, 1)) <> LCase(Mid(MyText, i, 1)) Then
                    If UCase(Mid(MyText, i - 1, 1)) = LCase(Mid(MyText, i - 1, 1)) Then
                        MyText = Left(MyText, i - 1) & Replace(MyText, Mid(MyText, i, 1), UCase(Mid(MyText, i, 1)), i, 1)
                    End If
                End If
            Next
            VBAProper = MyText
        End If
    End If
End Function

Hàm này sau khi đặt trong Module, quay lại cái form, đặt thuộc tính cho textbox như sau:

PHP:
Private Sub TextBox1_Change()
    TextBox1.Value = VBAProper(TextBox1)
End Sub

Tới đây, tôi nghĩ sẽ không còn là vấn đề nữa!
 
Upvote 0

File đính kèm

  • ProperCase.xls
    21.5 KB · Đọc: 128
Lần chỉnh sửa cuối:
Upvote 0
Sao kỳ vậy ta, mình test trên máy không thấy lỗi gì hết, bật caplock cũng thấy bình thướng, anh coi lại lần nữa coi sao

Để dễ hiểu vấn đề, bạn viết toàn bộ chữ có dấu (viết hoa) lên một sheet nào đó, ví dụ:

tại ô A1 bạn gõ "HOÀNG TRỌNG NGHĨA LÀ MINH THIỆN"

sau đó tại ô khác bạn gõ công thức =PROPER(A1)

kết quả sẽ cho ra: "Hoàng Trng Nghĩa Là Minh Thin"

Bạn làm thử trên sheet thôi đã thấy điều này, huống hồ chi bạn làm trên Form.
 
Upvote 0
Sao kỳ vậy ta, mình test trên máy không thấy lỗi gì hết, bật caplock cũng thấy bình thướng, anh coi lại lần nữa coi sao
Excel 2010 chắc không có vấn đề, nhưng bạn thử test trên phiên bản Excel 2007 trở về trước với tiếng Việt có dấu xem có được không nha!
 
Upvote 0
Sao kỳ vậy ta, mình test trên máy không thấy lỗi gì hết, bật caplock cũng thấy bình thướng, anh coi lại lần nữa coi sao

Cũng nói thêm, nếu bạn dùng Textbox trong Control Toolbox thì khi thoát con trỏ khỏi textbox, tất cả những chữ có dấu có thể trở thành dấu chấm hỏi (?) ngay ký tự có dấu (điều này không ai khắc phục được ngoại trừ bác Bill).
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn các anh, vậy là mình lại học thêm được 1 kiến thức mới, Đã test và phát hiện đúng như các anh nói.
 
Upvote 0
Để dễ hiểu vấn đề, bạn viết toàn bộ chữ có dấu (viết hoa) lên một sheet nào đó, ví dụ:

tại ô A1 bạn gõ "HOÀNG TRỌNG NGHĨA LÀ MINH THIỆN"

sau đó tại ô khác bạn gõ công thức =PROPER(A1)

kết quả sẽ cho ra: "Hoàng Trng Nghĩa Là Minh Thin"

Bạn làm thử trên sheet thôi đã thấy điều này, huống hồ chi bạn làm trên Form.
Anh test với chữ thường chưa? bị lỗi nhen với chữ hoàng trọng nghĩa là minh thiện nó ra vậy nè HoàNg TrọNg NghĩA Là Minh ThiệN mà tác giả iu cầu là với chữ thường ra chữ hoa chứ đâu có nói chữ hoa ra chữ thường đâu
 
Upvote 0
Anh test với chữ thường chưa? bị lỗi nhen với chữ hoàng trọng nghĩa là minh thiện nó ra vậy nè HoàNg TrọNg NghĩA Là Minh ThiệN mà tác giả iu cầu là với chữ thường ra chữ hoa chứ đâu có nói chữ hoa ra chữ thường đâu

Gì vậy nmhung49 ? Tác giả hỏi là:

Ai biết chỉ dùm code để khi gõ vào textbox họ và tên 1 người nào đó ở dạng gõ chữ thường (ví dụ nguyễn văn a) thì sẽ tự động chuyển thành chữ in hoa các chữ cái đầu (Nguyễn Văn A).
Xin cảm ơn rất nhiều.

Theo như nmhung49 thì khi sử dụng cái textbox đó, thì phải ghi chú là "Bạn phải tắt caps lock trước khi gõ chữ vào đây" hay sao nè?

Ở đây, chúng ta cần phải có một cái nhìn tổng quát, đã hướng dẫn thì hướng dẫn tận tình và lường trước những tình huống có thể xảy ra chứ em trai.
 
Upvote 0
Anh test với chữ thường chưa? bị lỗi nhen với chữ hoàng trọng nghĩa là minh thiện nó ra vậy nè HoàNg TrọNg NghĩA Là Minh ThiệN mà tác giả iu cầu là với chữ thường ra chữ hoa chứ đâu có nói chữ hoa ra chữ thường đâu
Đồng chí này thiệt là...
Người ta đang tính toán trên Unicode dựng sẵn, đồng chí lại cho ví dụ là chuổi thuộc Unicode tổ hợp
 
Upvote 0
Đồng chí này thiệt là...
Người ta đang tính toán trên Unicode dựng sẵn, đồng chí lại cho ví dụ là chuổi thuộc Unicode tổ hợp

Em thấy nếu muốn dùng WorksheetFunction trong trường hợp này cũng được, nhưng phải viết như vầy cho gọn:

PHP:
Private Sub TextBox1_Change()
    TextBox1 = WorksheetFunction.Proper(LCase(TextBox1))
End Sub

Bảo đảm sẽ không bị lỗi khác (với điều kiện chỉ dùng trong Excel).
 
Lần chỉnh sửa cuối:
Upvote 0
Em thấy nếu muốn dùng WorksheetFunction trong trường hợp này cũng được, nhưng phải viết như vầy cho gọn:

PHP:
Private Sub TextBox1_Change()
    TextBox1 = WorksheetFunction.Proper(LCase(TextBox1))
End Sub

Bảo đảm sẽ không bị lỗi khác (với điều kiện chỉ dùng trong Excel).
Nói chung là hàm PROPER chỉ đúng với tiếng Việt Unicode trong trường hợp:
- Xài trên Excel 2010
- Chuổi phải là Unicode dựng sẵn

Không tin cứ copy chuổi mà nmhung49 đưa ở trên paste vào TextBox sẽ biết liền (vì chuổi ấy là Unicode tổ hợp)
 
Upvote 0
Nói chung là hàm PROPER chỉ đúng với tiếng Việt Unicode trong trường hợp:
- Xài trên Excel 2010
- Chuổi phải là Unicode dựng sẵn

Không tin cứ copy chuổi mà nmhung49 đưa ở trên paste vào TextBox sẽ biết liền (vì chuổi ấy là Unicode tổ hợp)

Thì phải tính trước chứ anh, em không để ý em đang dùng Unicode tổ hợp nưa chứ, Thanks nhiều anh nhen
 
Upvote 0
Thì phải tính trước chứ anh,
Muốn "tính" cũng không biết làm sao mà tính đây
Unicode dựng sẵn: chữ và dấu chung (gộp chung thành 1 ký tự mới)
Unicode tổ hợp: Chữ và dấu riêng (không gộp chung)
Có thể dùng hàm LEN để kiểm tra
Vậy nên khi dùng For... Next để duyệt qua các ký tự cũng chẳng biết đường nào mà lần
 
Upvote 0
Nói chung là hàm PROPER chỉ đúng với tiếng Việt Unicode trong trường hợp:
- Xài trên Excel 2010
- Chuổi phải là Unicode dựng sẵn

Không tin cứ copy chuổi mà nmhung49 đưa ở trên paste vào TextBox sẽ biết liền (vì chuổi ấy là Unicode tổ hợp)

Em thử rồi, với mọi kiểu (VNI, UNI, UNI tổ hợp...) đều sử dụng cái này được!

PHP:
Function ExcelProper(ByVal MyText As String) As String
    ExcelProper = WorksheetFunction.Proper(LCase(MyText))
End Function

Thầy thử xem!
 
Upvote 0
Em thử rồi, với mọi kiểu (VNI, UNI, UNI tổ hợp...) đều sử dụng cái này được!

PHP:
Function ExcelProper(ByVal MyText As String) As String
    ExcelProper = WorksheetFunction.Proper(LCase(MyText))
End Function

Thầy thử xem!
Chẳng hiểu bạn thử bằng cách nào nữa... Vụ này đã nói nhiều lần trên GPE rồi còn gì, PROPER làm quái gì chơi được với Unicode tổ hợp... Vậy mà Nghĩa làm được thì đúng là... phát hiện mới nha
Mời các bạn khác thử tiếp trên Excel 2007 hoặc Excel 2010 trên file đính kèm dưới đây
 

File đính kèm

  • UnicodeTOHOP.xlsx
    8.2 KB · Đọc: 33
Lần chỉnh sửa cuối:
Upvote 0
Em thử rồi, với mọi kiểu (VNI, UNI, UNI tổ hợp...) đều sử dụng cái này được!

PHP:
Function ExcelProper(ByVal MyText As String) As String
    ExcelProper = WorksheetFunction.Proper(LCase(MyText))
End Function

Thầy thử xem!
Em thử rồi mà đâu có được đâu anh, anh test lai xem
 
Upvote 0
Chẳng hiểu bạn thử bằng cách nào nữa... Vụ này đã nói nhiều lần trên GPE rồi còn gì, PROPER làm quái gì chơi được với Unicode tổ hợp... Vậy mà Nghĩa làm được thì đúng là... phát hiện mới nha
Mời các bạn khác thử tiếp trên Excel 2007 hoặc Excel 2010 trên file đính kèm dưới đây

Thầy xem File và hình ảnh sẽ thấy rằng trên máy WinXP và Excel 2003 thực hiện bình thường! (File này đã được convert thành Excel 2003)

attachment.php
 

File đính kèm

  • Picture1.jpg
    Picture1.jpg
    65.6 KB · Đọc: 85
  • ExcelProperUF.xls
    28 KB · Đọc: 29
Upvote 0
Web KT

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

Back
Top Bottom