Lôi code chuyển text sang chứ hoa (1 người xem)

  • Thread starter Thread starter hdg2318
  • Ngày gửi Ngày gửi
Liên hệ QC

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

hdg2318

Thành viên mới
Tham gia
13/5/13
Bài viết
40
Được thích
3
mình có tìm được 1 đoạn code chuyển chữ thường sang chữ hoa rất đơn giản. Với text thì ok, nhưng với số thì nó lại convert định dạng số sang định dạng text, làm cho công thức ko chạy được. Các bạn xem giúp và sửa hộ mình đoạn code này với.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim ar As Range
On Error Resume Next
Set ar = Range("D:L")
If Not Intersect(Target, ar) Is Nothing Then
Application.EnableEvents = False
Target.Value = UCase(Target)
Application.EnableEvents = True
End If
End Sub
 
mình có tìm được 1 đoạn code chuyển chữ thường sang chữ hoa rất đơn giản. Với text thì ok, nhưng với số thì nó lại convert định dạng số sang định dạng text, làm cho công thức ko chạy được. Các bạn xem giúp và sửa hộ mình đoạn code này với.
Tôi test không thấy vậy. Trừ phi là vùng dữ liệu của bạn đã định dạng Text trước đó
Bạn có thể thí nghiệm code trên 1 file trắng sẽ biết liền
 
Upvote 0
mình có tìm được 1 đoạn code chuyển chữ thường sang chữ hoa rất đơn giản. Với text thì ok, nhưng với số thì nó lại convert định dạng số sang định dạng text, làm cho công thức ko chạy được. Các bạn xem giúp và sửa hộ mình đoạn code này với.
Mã:
[COLOR=#000000][I]Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim ar As Range[/I][/COLOR]
[COLOR=#000000][I]On Error Resume Next[/I][/COLOR]
[COLOR=#000000][I]Set ar = Range("D:L")[/I][/COLOR]
[COLOR=#000000][I]If Not Intersect(Target, ar) Is Nothing Then
[/I][/COLOR]    [COLOR=#0000cd]If Not (IsDate(Target) Or IsNumeric(Target)) then[/COLOR]
        [I]Application.EnableEvents = False[/I]
[COLOR=#000000][I]        Target.Value = UCase(Target)[/I][/COLOR]
[COLOR=#000000][I]        Application.EnableEvents = True
[/I][/COLOR]    [COLOR=#0000cd]End if[/COLOR]
[COLOR=#000000][I]End If[/I][/COLOR]
[COLOR=#000000][I]End Sub
[/I][/COLOR]
giá trị trả về của Ucase là String (Returns a string or character containing the specified string converted to uppercase - https://msdn.microsoft.com/en-us/library/53e2ew8a(v=vs.90).aspx)
thêm mấy chữ xanh xanh cho chắc
 
Upvote 0
Mã:
[COLOR=#000000][I]Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim ar As Range[/I][/COLOR]
[COLOR=#000000][I]On Error Resume Next[/I][/COLOR]
[COLOR=#000000][I]Set ar = Range("D:L")[/I][/COLOR]
[COLOR=#000000][I]If Not Intersect(Target, ar) Is Nothing Then
[/I][/COLOR]    [COLOR=#0000cd]If Not (IsDate(Target) Or IsNumeric(Target)) then[/COLOR]
        [I]Application.EnableEvents = False[/I]
[COLOR=#000000][I]        Target.Value = UCase(Target)[/I][/COLOR]
[COLOR=#000000][I]        Application.EnableEvents = True
[/I][/COLOR]    [COLOR=#0000cd]End if[/COLOR]
[COLOR=#000000][I]End If[/I][/COLOR]
[COLOR=#000000][I]End Sub
[/I][/COLOR]
giá trị trả về của Ucase là String (Returns a string or character containing the specified string converted to uppercase - https://msdn.microsoft.com/en-us/library/53e2ew8a(v=vs.90).aspx)
thêm mấy chữ xanh xanh cho chắc
Thanks bạn. thế này là OK rồi
 
Upvote 0
Đây thầy ơi.
Em để định dạng .xls thì ok, nhưng chuyển sang .xlsm thì bị.
Tôi chẳng thấy bị gì cả! Có chăng là bạn đang gõ sai định dạng thôi (xem lại Control Panel máy bạn đang quy đinh dấu thập phân là dấu gì)
Bạn thử bỏ luôn code rồi gõ lại xem kết quả thế nào
 
Upvote 0
Tôi chẳng thấy bị gì cả! Có chăng là bạn đang gõ sai định dạng thôi (xem lại Control Panel máy bạn đang quy đinh dấu thập phân là dấu gì)
Bạn thử bỏ luôn code rồi gõ lại xem kết quả thế nào
vậy em cung không rõ nữa. Nhưng vẫn file em vừa up lên, gõ ngoài vùng áp code thì vẫn ok thầy ạ. thầy xem hình sẽ rõ ạ.
gpe01.jpg
 
Upvote 0
vậy em cung không rõ nữa. Nhưng vẫn file em vừa up lên, gõ ngoài vùng áp code thì vẫn ok thầy ạ. thầy xem hình sẽ rõ ạ.
View attachment 147603

Ah... ha... tôi hiểu rồi! Thì ra máy bạn đang định dạng dấu chấm là dấu phân cách ngàn và dấu phẩy là dấu thập phân
Vậy thì chỉ cần sửa dòng:
Mã:
Target.Value = UCase(Target)
thành:
Mã:
If VarType(Target.Value) = 8 Then Target.Value = UCase(Target)
Là xong!
 
Upvote 0
Web KT

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

Back
Top Bottom