PDA

View Full Version : Để chuyển chữ thường sang chữ hoa



ongtrungducmx25
01-08-07, 04:44 PM
Để chuyển chữ thường sang chữ hoa , bạn cắt dán theo nội dung dưới đây
Sub MakeProper()
Dim rngSrc As Range
Dim lMax As Long, lCtr As Long
Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)
lMax = rngSrc.Cells.Count
For lCtr = 1 To lMax
If Not rngSrc.Cells(lCtr).HasFormula Then
rngSrc.Cells(lCtr) = Application.Proper(rngSrc.Cells(lCtr))
End If
Next lCtr
End Sub

LikeIt
01-08-07, 05:12 PM
đánh như thế nào để chuyển đổi đc hả bạn ơi? mình đã copy và past vào modul rồi. sori vì mình ko hiểu vba, nhưng thích nghịch nó để thấy cái hay thì áp dụng.

ongtrungducmx25
01-08-07, 06:12 PM
để minh thử tạo một nút nào đó để chuyển cho gọn nhẹ khổi mất công gõ công thức cho đở mệt hiện giờ mình chưa biết nhé! thông cảm. hêhhehehhehe

tedaynui
01-08-07, 10:30 PM
Trong Excel cũng có hàm UPPER(text) để chuyển chữ thường thành chữ hoa

Lam_A0
02-08-07, 08:15 AM
để minh thử tạo một nút nào đó để chuyển cho gọn nhẹ khổi mất công gõ công thức cho đở mệt hiện giờ mình chưa biết nhé! thông cảm. hêhhehehhehe

Bạn vẽ đại một cái gì đấy sau đó assign macro vào là xong mà.

vungoc
02-08-07, 08:29 AM
Việc chuyển đổi chữ trong excel đã có sẵn các hàm Upper, Proper, Lower, ...

Lam_A0
02-08-07, 08:30 AM
Trong Excel cũng có hàm UPPER(text) để chuyển chữ thường thành chữ hoa

Hàm UPPER(text) chuyển toàn bộ text thành chữ hoa, còn Sub của bạn ongtrungducmx25 chỉ chuyển chữ cái đầu thôi.
Thân!

vungoc
02-08-07, 08:37 AM
Hàm UPPER(text) chuyển toàn bộ text thành chữ hoa, còn Sub của bạn ongtrungducmx25 chỉ chuyển chữ cái đầu thôi.
Thân!

Bạn dùng hàm Proper có sẵn của excel cũng làm được việc này - khỏe re !

phamduylong
02-08-07, 01:10 PM
Các bạn có thể dùng hàm này để chuyển chữ thường thành chữ hoa cho Unicode


Function ProperUni(uni) As String
uni = " " & LCase(uni)
For n = 2 To Len(uni)
kytu = Mid(uni, n, 1)
If Mid(uni, n - 1, 1) = " " Then
If AscW(kytu) < 256 Then
kytu = UCase(kytu)
Else
kytu = ChrW(AscW(kytu) - 1)
End If
End If
puni = puni & kytu
Next
ProperUni = puni
End Function

LikeIt
02-08-07, 01:38 PM
Các bạn có thể dùng hàm này để chuyển chữ thường thành chữ hoa cho Unicode


Function ProperUni(uni) As String
uni = " " & LCase(uni)
For n = 2 To Len(uni)
kytu = Mid(uni, n, 1)
If Mid(uni, n - 1, 1) = " " Then
If AscW(kytu) < 256 Then
kytu = UCase(kytu)
Else
kytu = ChrW(AscW(kytu) - 1)
End If
End If
puni = puni & kytu
Next
ProperUni = puni
End Function


mình chuyển từ .vntime font ABC sang Unicode không được. Có cách nào một văn bản chuyển từ .VNtime sang font Unicode VD Arial dc không bạn? vì có những văn bản (sẵn có) phải chuyển cho người việt ở nước ngoài thì họ không đọc được font vntime.mà họ chỉ có time new romance và arial thì ok.

tedaynui
02-08-07, 01:45 PM
Mấy cái chuyển đổi Font, đọc số thành chữ ... mấy cái này các bạn Search trên 4R nhiều lắm. Mình nhớ bác Phamduylong có post bài viết lẫn file rất hay đó.
TDN

ongtrungducmx25
02-08-07, 03:09 PM
Em đã làm bản chuyển đổi có thể chuyển đổi được ,các bạn phải phủ khối chọn vùng cần chuyển đổi nhé, cả chữ hoa lẫn chữ thường nhé mong các bạn cải thiện cho hoàn hảo hơn.--=0 :-= ||||| !$@!!

phamduylong
03-08-07, 09:06 PM
mình chuyển từ .vntime font ABC sang Unicode không được. Có cách nào một văn bản chuyển từ .VNtime sang font Unicode VD Arial dc không bạn? vì có những văn bản (sẵn có) phải chuyển cho người việt ở nước ngoài thì họ không đọc được font vntime.mà họ chỉ có time new romance và arial thì ok.
Nếu là Excel, tham khảo:
http://www.giaiphapexcel.com/forum/showthread.php?t=2738

connhangheo
05-10-07, 04:36 PM
các bác cho em hỏi cách tạo ra hàm(hay thủ tục) proper như thế nào. Ý em là nếu giả sử như bây giờ trong excel ko có hàm proper thì mình sẽ tạo ra nó như thế nào. Thanks!

SoiBien
05-10-07, 04:52 PM
các bác cho em hỏi cách tạo ra hàm(hay thủ tục) proper như thế nào. Ý em là nếu giả sử như bây giờ trong excel ko có hàm proper thì mình sẽ tạo ra nó như thế nào. Thanks!

Thì hình như là ý tưởng thế này.
đọc tửng ký tự của chuỗi
ký tự đầu tiên thì chắc chắn viết hoa rồi (tức là đổi chữ cái đó thành chữ cái viết hoa trong bảng mã tương ứng)

đọc ký tự tiếp theo nếu gặp các ký tự đặc biệt như space, ., !, .... thì ký tự kế đó sẽ được đổi thành chữ hoa

không phải là ký tự đặc biệt đó thì chữ hoa chuyển thành chữ thường.

xét đến cuối chuỗi.

Thân.

P/S. chuyển chính xác như thế nào thì mình không nắm rõ toàn bộ, nhưng hình như là mã ký tự đó sẽ +- hằng số (32 thì phải) cái này phải tham khảo bảng mã bạn ạ.

Mr Okebab
05-10-07, 04:56 PM
các bác cho em hỏi cách tạo ra hàm(hay thủ tục) proper như thế nào. Ý em là nếu giả sử như bây giờ trong excel ko có hàm proper thì mình sẽ tạo ra nó như thế nào. Thanks!

Thì đã có hàm UCase thay thế rồi.

Thân!

connhangheo
05-10-07, 11:25 PM
theo em nghĩ thì sẽ làm như sau
- đầu tiên tách chuỗi thành từng phần tử (dùng split ???)
- lưu các phần tử này vào 1 mảng (động)
- với mỗi phần tử của mảng sẽ dùng hàm Ucase như bác Bắp nói
- gộp các phần tử này lại thành 1 chuỗi (dùng join ???)
- cuối cùng là in ra chuỗi đó, thế là okei???
em nghĩ là như thế nhưng chưa thử, mong các bác chỉ giáo

SoiBien
05-10-07, 11:42 PM
Vậy là ý bạn hỏi là VIẾT HOA TOÀN BỘ, hay Viết Hoa Chữ Đầu?

levanduyet
06-10-07, 06:38 AM
Tôi nghĩ chúng ta tham khảo của bác Phamduylong là được mà.

Lê Văn Duyệt.
PS: Chú ý hàm UCase cho Unicode, hình như không được như ý đâu!

nvson
06-10-07, 07:30 AM
các bác cho em hỏi cách tạo ra hàm(hay thủ tục) proper như thế nào. Ý em là nếu giả sử như bây giờ trong excel ko có hàm proper thì mình sẽ tạo ra nó như thế nào. Thanks!
Dựa vào bảng mã ASCII (ANSI) và bảng mã dùng cho tiếng Việt là tạo được hàm giống như hàm PROPER của M$ Excel thôi.
Bạn tham khảo đoạn code sau (mới chỉ dùng bảng mã ASCII nên tiếng Việt sẽ không chuẩn).


Public Function Proper_GPE(strText As String) As String
Dim i
Dim strSub As String
If Asc(Mid(strText, 1, 1)) >= 97 And Asc(Mid(strText, 1, 1)) <= 122 Then
strSub = Chr(Asc(Mid(strText, 1, 1)) - 32)
Else
strSub = Mid(strText, 1, 1)
End If
For i = 2 To Len(strText)
Select Case Asc(Mid(strText, i, 1))
Case Is = 10, 32 To 47, 58 To 64, 91 To 96, 123 To 126
strSub = strSub & Mid(strText, i, 1)
Case 65 To 90
Select Case Asc(Mid(strText, i - 1, 1))
Case Is = 10, 32 To 47, 58 To 64, 91 To 96, 123 To 126
strSub = strSub & Mid(strText, i, 1)
Case Else
strSub = strSub & Chr(Asc(Mid(strText, i, 1)) + 32)
End Select
Case 97 To 122
Select Case Asc(Mid(strText, i - 1, 1))
Case Is = 10, 32 To 47, 58 To 64, 91 To 96, 123 To 126
strSub = strSub & Chr(Asc(Mid(strText, i, 1)) - 32)
Case Else
strSub = strSub & Mid(strText, i, 1)
End Select
Case Else
strSub = strSub & Mid(strText, i, 1)
End Select
Next i
Proper_GPE = strSub
End Function


To Mr_Okebab:
Hàm Ucase trong VBA sao lại giống hàm Proper trong M$ Excel nhỉ????

Mr Okebab
06-10-07, 12:43 PM
To Mr_Okebab:
Hàm Ucase trong VBA sao lại giống hàm Proper trong M$ Excel nhỉ????

Không phải là giống mà là . . . hơi giống. Ý rằng có thể dựa vào nó để làm giống như Proper.

Thân!

connhangheo
12-10-07, 10:52 AM
theo em nghĩ thì sẽ làm như sau
- đầu tiên tách chuỗi thành từng phần tử (dùng split ???)
- lưu các phần tử này vào 1 mảng (động)
- với mỗi phần tử của mảng sẽ dùng hàm Ucase như bác Bắp nói
- gộp các phần tử này lại thành 1 chuỗi (dùng join ???)
- cuối cùng là in ra chuỗi đó, thế là okei???
em nghĩ là như thế nhưng chưa thử, mong các bác chỉ giáo
em xin thực hiện ý tưởng của em,mong các bác cho ý kiến, em mới học VBA. Thanks

ongtrungducmx25
12-10-07, 03:30 PM
cái này cũng hay nhưng muốn chọn nhiều ô thì phải làm sau

Function pro(chuoi As String) As String
Dim i As Integer, arr(1) As String, gop() As String
Dim strin As String, strout As String, tach() As String
gop = Split(chuoi, " ")
For i = LBound(gop) To UBound(gop)
If gop(i) <> "" Then
arr(0) = UCase(Left(gop(i), 1))
arr(1) = LCase(Mid(gop(i), 2))
gop(i) = Join(arr, "")
End If
Next i
strin = Join(gop, " ")
tach = Split(strin, " ")
strout = ""
For i = LBound(tach) To UBound(tach)
If tach(i) <> "" Then
strout = strout & " " & tach(i)
End If
Next i
pro = Trim(strout)
End Function

mỗi lần chọn thì phải đánh lại hàm sau bạn thì lâu lắm đó bạn có thể làm ra một UF không nhỉ!

connhangheo
12-10-07, 03:43 PM
em ko hiểu, em mới học, bác thông cảm. UF là cái gì ạ

phamduylong
12-10-07, 09:49 PM
mình chuyển từ .vntime font ABC sang Unicode không được. Có cách nào một văn bản chuyển từ .VNtime sang font Unicode VD Arial dc không bạn? vì có những văn bản (sẵn có) phải chuyển cho người việt ở nước ngoài thì họ không đọc được font vntime.mà họ chỉ có time new romance và arial thì ok.
Chuyển mã các bảng tính Excel, các bạn tham khảo tại:
http://www.giaiphapexcel.com/forum/showthread.php?t=2738 (http://<a href=)


Trong Excel cũng có hàm UPPER(text) để chuyển chữ thường thành chữ hoa.
Hàm PROPER và UPPER không xử lý đúng với Unicode.
Ví dụ PROPER("NGUYỄN TRẢI") > NguyỄn Trãi, UPPER("ông trời") > ÔNG TRờI.

connhangheo
12-10-07, 11:10 PM
em thử hàm của em được thì thấy được, bác thử xem có được ko nhé, em mới học, mong các bác góp ý kiến

p_tai79
08-02-09, 08:59 PM
mình chuyển từ .vntime font ABC sang Unicode không được. Có cách nào một văn bản chuyển từ .VNtime sang font Unicode VD Arial dc không bạn? vì có những văn bản (sẵn có) phải chuyển cho người việt ở nước ngoài thì họ không đọc được font vntime.mà họ chỉ có time new romance và arial thì ok.
sao không dung cái này làm được hết

hsilver
03-04-11, 04:00 PM
mấy bác nói cao siêu vậy thì chỉ có mấy người biết rồi mà quên thì nhắc cho nhớ. Chứ mấy anh em chưa đụng hàm loại này nghe chỉ như sấm đánh ngang tai.phê lòi mắt

hsilver
03-04-11, 04:20 PM
sao không dung cái này làm được hết
đã test bài này. thanks alot

phamnhung8988
31-12-13, 10:03 AM
mình có đọc được cách - Đổi chữ hoa thành chữ thường (đã bổ sung chức năng nhận diện ô có công thức thì không chuyển đổi), phím tắt như sau:
Ctrl+Shift+H - CHUYỂN TẤT CẢ THÀNH CHỮ HOA
Ctrl+Shift+T - chuyển tất cả thành chữ thường
Ctrl+Shift+K - Chuyển Tất Cả Thành Chữ Hoa Đầu Mỗi Từ
Ctrl+Shift+F - Chuyển tất cả thành chữ hoa đầu dòng thôi.

nhưng có lúc thực hiện được, có lúc lại không thực hiện được, ai đó biết thì chỉ cho mình với, cám ơn cả nhà nhiều