Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Để chuyển chữ thường sang chữ hoa

Thảo luận trong 'Hỏi đáp những vấn đề khác' bắt đầu bởi ongtrungducmx25, 1 Tháng tám 2007.

  1. ongtrungducmx25

    ongtrungducmx25 Thành viên gạo cội

    Để 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
     
  2. LikeIt

    LikeIt Thành viên tiêu biểu

    đá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.
     
  3. ongtrungducmx25

    ongtrungducmx25 Thành viên gạo cội

    để 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
     
  4. tedaynui

    tedaynui (*_*)

    Trong Excel cũng có hàm UPPER(text) để chuyển chữ thường thành chữ hoa
     
  5. Lam_A0

    Lam_A0 Thành viên hoạt động

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

    Các file đính kèm:

    • Proper.xls
      Kích thước:
      23.5 KB
      Đọc:
      1,356
  6. vungoc

    vungoc Thành viên tiêu biểu

    Việc chuyển đổi chữ trong excel đã có sẵn các hàm Upper, Proper, Lower, ...
     
  7. Lam_A0

    Lam_A0 Thành viên hoạt động

    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!
     
  8. vungoc

    vungoc Thành viên tiêu biểu

    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 !
     
  9. phamduylong

    phamduylong Thành viên danh dự

    Các bạn có thể dùng hàm này để chuyển chữ thường thành chữ hoa cho Unicode
    Mã:
    [FONT=Verdana]Function ProperUni(uni) As String[/FONT]
    [FONT=Verdana]uni = " " & LCase(uni)[/FONT]
    [FONT=Verdana]For n = 2 To Len(uni)[/FONT]
    [FONT=Verdana]kytu = Mid(uni, n, 1)[/FONT]
    [FONT=Verdana]If Mid(uni, n - 1, 1) = " " Then[/FONT]
    [FONT=Verdana]If AscW(kytu) < 256 Then[/FONT]
    [FONT=Verdana]kytu = UCase(kytu)[/FONT]
    [FONT=Verdana]Else[/FONT]
    [FONT=Verdana]kytu = ChrW(AscW(kytu) - 1)[/FONT]
    [FONT=Verdana]End If[/FONT]
    [FONT=Verdana]End If[/FONT]
    [FONT=Verdana]puni = puni & kytu[/FONT]
    [FONT=Verdana]Next[/FONT]
    [FONT=Verdana]ProperUni = puni[/FONT]
    [FONT=Verdana]End Function[/FONT]
    
     
  10. LikeIt

    LikeIt Thành viên tiêu biểu

    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.
     
  11. tedaynui

    tedaynui (*_*)

    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
     
  12. ongtrungducmx25

    ongtrungducmx25 Thành viên gạo cội

    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 :-= ||||| !$@!!
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 2 Tháng tám 2007
  13. phamduylong

    phamduylong Thành viên danh dự

    Nếu là Excel, tham khảo:
    http://www.giaiphapexcel.com/forum/showthread.php?t=2738
     
  14. connhangheo

    connhangheo Thành viên thường trực

    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!
     
  15. SoiBien

    SoiBien Thành viên tiêu biểu

    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 ạ.
     
    Lần chỉnh sửa cuối: 5 Tháng mười 2007
  16. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

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

    Thân!
     
  17. connhangheo

    connhangheo Thành viên thường trực

    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
     
  18. SoiBien

    SoiBien Thành viên tiêu biểu

    Vậy là ý bạn hỏi là VIẾT HOA TOÀN BỘ, hay Viết Hoa Chữ Đầu?
     
  19. levanduyet

    levanduyet Thành viên danh dự

    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!
     
  20. nvson

    nvson Geotechnics

    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).
    Mã:
    Public Function [B][COLOR=red]Proper_GPE[/COLOR][/B](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ỉ????
     

Chia sẻ trang này