Tự động đổi chữ thường ra chữ hoa sau khi nhập liệu

Liên hệ QC

jackylai

Thành viên mới
Tham gia
26/11/07
Bài viết
19
Được thích
5
Dear all,
Mình có một vấn đề rất mong anh chị em trong diễn đàn giúp đỡ:
Mình có một range (vd: A1:A10) trong Sheet1 và muốn mỗi lần nhập liệu vào bất kỳ cell nào trong range này dữ liệu sẽ tự động được chuyển từ chữ thường sang chữ in hoa.
Rất mong nhận được sự giúp đỡ.
(Đã dùng hướng dẫn trong thread này: http://www.giaiphapexcel.com/forum/showthread.php?3239 nhưng không có tác dụng)
 
Bạn chèn code này vào sheet là ok, lưu ý chỉ tác dụng trên cột A thôi nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
    ActiveCell.Offset(-1) = UCase(ActiveCell.Offset(-1))
End If
End Sub
 
Upvote 0
Bạn chèn code này vào sheet là ok, lưu ý chỉ tác dụng trên cột A thôi nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
    ActiveCell.Offset(-1) = UCase(ActiveCell.Offset(-1))
End If
End Sub

Bạn Jackylai@ chỉ muốn có tác dụng chuyển thành chữ hoa từ A1:A10 thôi mà thầy! như vậy code phải sửa ntn? Em cảm ơn
 
Upvote 0
Hic,, không đưa file cứ bắt người khác tưởng tượng hoài. Cái excel có sẵn hàm UPPER không chịu xài. Nếu muốn làm bằng VBA thì up file lên nhé
 
Upvote 0
IfNếu dùng hàm UPPER thì phải đặt công thức ở cột khác, trong khi ý em muốn nhập xong nó tự chuyển luôn. Nếu muốn áp dùng cho range, code có thể sửa như sau được không ạ: "If Target = Range ("A1:A10")"?
 
Upvote 0
Đơn giản mà


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <= 10 Then
If Target.Column = 1 Then
ActiveCell.Offset(-1) = UCase(ActiveCell.Offset(-1))
End If
End If
End Sub
 
Upvote 0
IfNếu dùng hàm UPPER thì phải đặt công thức ở cột khác, trong khi ý em muốn nhập xong nó tự chuyển luôn. Nếu muốn áp dùng cho range, code có thể sửa như sau được không ạ: "If Target = Range ("A1:A10")"?
Code sửa lại như thế này
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        Target.Value = UCase(Target.Value)
End If
End Sub
 
Upvote 0
Code sửa lại như thế này
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        Target.Value = UCase(Target.Value)
End If
End Sub
Đối với công thức thì nên bỏ qua không chuyển.
 
Upvote 0
Vậy làm cho tới nơi luôn là thế này chắc là được

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
    If Not Target.HasFormula Then Target = UCase(Target)
End If
End Sub
 
Upvote 0
Vậy làm cho tới nơi luôn là thế này chắc là được

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
    If Not Target.HasFormula Then Target = UCase(Target)
End If
End Sub
Fill xuống vẫn còn bị lỗi nha bạn.
 
Upvote 0
Bạn cứ thử A1 nhập 1, A2 nhập 2, 2 cell đó fill xuống để ra số thứ tự. Xử lý lỗi bạn dư biết mà phải hôn.
À thì ra là thế, vậy mà mình cứ tưởng bạn đề cập vân đề gì. Mình cứ nghĩ là tác giả sẽ nhập nôi dung gi đó trong khu vực này, dễ gì đem cái vùng này ra mà điền số thứ tự chứ. Vậy phí code quá còn gì, hì hì.
 
Upvote 0
Vậy làm cho tới nơi luôn là thế này chắc là được

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
    If Not Target.HasFormula Then Target = UCase(Target)
End If
End Sub
Thầy Hải ơi, cho em hỏi code này muốn sửa lại chỉ viết Hoa chữ cái đầu tiên thì sửa như thế nào ạ? ví dụ: Nguyễn Văn An
 
Upvote 0
Cảm ơn thầy Tuấn- Em muốn sử dụng VBA như của thầy Hải nhưng thay cho việc chuyển đổi toàn bộ thành chữ in hoa thì em chỉ viết Hoa chữ cái đầu tiên ạ!
Bạn dùng hàm này thử đi nhé. Hàm sẽ bỏ các khoảng trắng dư thừa giữa 2 từ và viết hoa ký tự đầu.

JavaScript:
Public Function QuyChuanHoTen(HoTen As String) As String
    Dim i As Long, TG As String, Ok As Boolean, s As String
    HoTen = Strings.Trim(HoTen)
    s = Strings.LCase$(HoTen)
    TG = ""
    Ok = True
    For i = 1 To Strings.Len(s)
        If Strings.Mid(s, i, 1) <> " " Then
            If Ok = True Then
                TG = TG + Strings.UCase$(Strings.Mid(s, i, 1))
                Ok = False
            Else
                TG = TG + Strings.Mid(s, i, 1)
            End If
        Else
            Ok = True
            If Strings.Mid(s, i + 1, 1) <> " " Then
                TG = TG + " "
            End If
        End If
    Next
    QuyChuanHoTen = Strings.Trim(TG)
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn dùng hàm này thử đi nhé. Hàm sẽ bỏ các khoảng trắng dư thừa giữa 2 từ và viết hoa ký tự đầu.

JavaScript:
Public Function QuyChuanHoTen(HoTen As String) As String
    Dim i As Long, TG As String, Ok As Boolean, s As String
    HoTen = Strings.Trim(HoTen)
    s = Strings.LCase$(HoTen)
    TG = ""
    Ok = True
    For i = 1 To Strings.Len(s)
        If Strings.Mid(s, i, 1) <> " " Then
            If Ok = True Then
                TG = TG + Strings.UCase$(Strings.Mid(s, i, 1))
                Ok = False
            Else
                TG = TG + Strings.Mid(s, i, 1)
            End If
        Else
            Ok = True
            If Strings.Mid(s, i + 1, 1) <> " " Then
                TG = TG + " "
            End If
        End If
    Next
    QuyChuanHoTen = Strings.Trim(TG)
End Function
dạ, Thầy cho em hỏi sử dụng hàm này như thế nào ạ? Em muốn sử dụng cho việc nhập họ tên ở cột C từ ô C5:C250 trong sheet1 ạ?
 
Upvote 0
Web KT
Back
Top Bottom