Tự động in hoa chữ cái đầu tiên sau dấu cách (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thanchetvnt

Thành viên chính thức
Tham gia
28/7/08
Bài viết
75
Đượ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

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

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

Upvote 0
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)
Có phải tôi đã nói là test trên Excel 2007 hoặc Excel 2010 hay không?
Còn với Excel 2003, tuy nó không có vấn đề với Unicode tổ hợp nhưng lại gặp vấn đề khác về dấu thanh ---> Vụ này cũng đã bàn nhiều lần rồi, nếu không thì cần quái gì viết hàm PROPER xài riêng cho tiếng Việt
 
Upvote 0
Để cho đồng chí tâm phục khẩu phục, thủ dùng hàm của đồng chí với chuổi lê văn ẩn (bảng mã Unicode dựng sẵn) xem thế nào nhé
Tôi test trên WinXP, Office 2003 đây:

Test_Proper.JPG
 

File đính kèm

Upvote 0
Để cho đồng chí tâm phục khẩu phục, thủ dùng hàm của đồng chí với chuổi lê văn ẩn (bảng mã Unicode dựng sẵn) xem thế nào nhé
Tôi test trên WinXP, Office 2003 đây:

Em thấy trong Unicode tổ hợp có các ký tự sau đây đại diện:

? : dấu hỏi

+ : dấu như chữ Ư, Ơ

` : dấu huyền

~ : dấu ngã

. : dấu nặng



Vậy từ đó mình có thể tách ra được không? thay vì sau dấu cách ta thêm các ký tự này để thực hiên?
 
Upvote 0
Hỏi ngoài lề:

Ngày xưa đi học lớp 1, thường nghe các thầy cô dạy câu thơ này để dễ nhớ:

O tròn như quả trứng gà
Ô thì đội , Ơ thì mang râu.

Vậy ^ người ta gọi là dấu mũ giống Excel ( 3^2 ) đọc là ba "mũ hai", như vậy ai cũng có thể biết.

Nhưng dấu của chữ Ơ hay Ư người ta gọi dấu "RÂU" được không nhỉ? Hay phải gọi nó là dấu gì?
 
Upvote 0
Hỏi ngoài lề:

Ngày xưa đi học lớp 1, thường nghe các thầy cô dạy câu thơ này để dễ nhớ:

O tròn như quả trứng gà
Ô thì đội , Ơ thì mang râu.

Vậy ^ người ta gọi là dấu mũ giống Excel ( 3^2 ) đọc là ba "mũ hai", như vậy ai cũng có thể biết.

Nhưng dấu của chữ Ơ hay Ư người ta gọi dấu "RÂU" được không nhỉ? Hay phải gọi nó là dấu gì?
Thì dấu RÂU Ẹc..Ẹc...
 
Upvote 0
Hiện tại mình cũng đang muốn hỏi về vấn đề này.

Có bạn nào đã làm ok rồi không giúp mình với. Yêu cầu của mình ko phải là nhập xong rồi lại insert thêm 1 cột nữa để chuyển đồi mà là trong cùng 1 cột đó, khi mình nhập xong và tab qua cột khác là nó sẽ thay đổi liền.
 
Upvote 0
Em thấy có file chỉ cần enter là tự động các chữ cái đầu tiên trong họ và tên tự động viết hoa.
 
Upvote 0
CODE Tự động chuyển chữ thường thành chữ HOA khi nhập dữ liệu trong Excel anh chị em nào rành có thể hướng dẫn cho em được không ạ... Em đang rất cần ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
1612498563086.png

Chuyển kích thước phông thành bình thường (cỡ 15), và bỏ in đậm (ctrl+B) đâu có cần code.

Bạn có thể chỉnh lại font chữ bằng cỡ mặc định được không? Ai cũng cỡ như thế này thì chả mấy chốc 3 bài hết 1 trang
Loại tâm lý tự nâng tầm mức quan trọng của mình (bài của mình) lên trên người khác (bài của người khác).
 
Upvote 0
View attachment 253981

Chuyển kích thước phông thành bình thường (cỡ 15), và bỏ in đậm (ctrl+B) đâu có cần code.


Loại tâm lý tự nâng tầm mức quan trọng của mình (bài của mình) lên trên người khác (bài của người khác).
Da vì file nhập liệu của em rất nhiều nên em muốn nhập chữ thường sau đó enter tự đông chuyển sang Chữ viết Hoa đầu dòng ạ (em dinh dung Worksheet_change, nó báo lỗi ) do em chưa hiểu lắm.
Mong các anh chị hướng dẫn em với ạ.
Em cảm ơn rất nhiều
 
Upvote 0
Da vì file nhập liệu của em rất nhiều nên em muốn nhập chữ thường sau đó enter tự đông chuyển sang Chữ viết Hoa đầu dòng ạ (em dinh dung Worksheet_change, nó báo lỗi ) do em chưa hiểu lắm.
Mong các anh chị hướng dẫn em với ạ.
Em cảm ơn rất nhiều
Bạn có thể cài phần mềm nhỏ nhẹ là Uoffice, nó có chức năng chuyển chữ hoa chữ thường như bạn muốn
 
Upvote 0

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

Back
Top Bottom