Nhờ giúp đỡ về code MsgBox (1 người xem)

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

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

platuan

Thành viên mới
Tham gia
2/12/09
Bài viết
45
Được thích
12
Chào các bác

Mình đang ko biết để dòng [ MsgBox "VietNamese Error, please check again!" ]
này ở vị trí nào là hợp lý để khi gặp lỗi còn sót Tiếng Việt thì nó chỉ hiển thị ra 1 lần thôi. Mong các bác giúp đỡ.

Dưới đây là code dò tìm lỗi "Còn xót Tiếng Việt"

Mã:
Option ExplicitSub DoTim()
Dim Cll As Range
Application.ScreenUpdating = False
For Each Cll In ActiveSheet.UsedRange
    If Locma(Cll.Value) = True Then Cll.Interior.ColorIndex = 0
    If Locma2(Cll.Value) = True Then Cll.Interior.ColorIndex = 3
[B]    MsgBox "VietNamese Error, please check again!"[/B]

    If Locma3(Cll.Value) = True Then Cll.Interior.ColorIndex = 5
Next
Application.ScreenUpdating = True
End Sub
Function Locma(vnstr As String) As Boolean
Dim c As String, i As Long
Locma = False
   For i = 1 To Len(vnstr)
      c = Mid(vnstr, i, 1)
      Select Case c
        Case "a": c = "OK"
        Case "b": c = "OK"
        Case "c": c = "OK"
        Case "d": c = "OK"
        Case "e": c = "OK"
        Case "f": c = "OK"
        Case "g": c = "OK"
        Case "h": c = "OK"
        Case "i": c = "OK"
        Case "j": c = "OK"
        Case "k": c = "OK"
        Case "l": c = "OK"
        Case "m": c = "OK"
        Case "n": c = "OK"
        Case "o": c = "OK"
        Case "p": c = "OK"
        Case "q": c = "OK"
        Case "r": c = "OK"
        Case "s": c = "OK"
        Case "t": c = "OK"
        Case "u": c = "OK"
        Case "v": c = "OK"
        Case "w": c = "OK"
        Case "x": c = "OK"
        Case "y": c = "OK"
        Case "z": c = "OK"
        Case "A": c = "OK"
        Case "B": c = "OK"
        Case "C": c = "OK"
        Case "D": c = "OK"
        Case "E": c = "OK"
        Case "F": c = "OK"
        Case "G": c = "OK"
        Case "H": c = "OK"
        Case "I": c = "OK"
        Case "J": c = "OK"
        Case "K": c = "OK"
        Case "L": c = "OK"
        Case "M": c = "OK"
         Case "N": c = "OK"
         Case "O": c = "OK"
         Case "P": c = "OK"
         Case "Q": c = "OK"
         Case "R": c = "OK"
         Case "S": c = "OK"
         Case "T": c = "OK"
         Case "U": c = "OK"
         Case "V": c = "OK"
         Case "W": c = "OK"
         Case "X": c = "OK"
         Case "Y": c = "OK"
         Case "Z": c = "OK"
      End Select
      If c = "OK" Then
        Locma = True
       Exit For
    End If
   Next i
End Function


Function Locma2(vnstr As String) As Boolean
Dim c As String, i As Long
Locma2 = False
   For i = 1 To Len(vnstr)
      c = Mid(vnstr, i, 1)
      Select Case c
         
         Case ChrW$(225): c = "OK"
         Case ChrW$(224): c = "OK"
         Case ChrW$(7843): c = "OK"
         Case ChrW$(227): c = "OK"
         Case ChrW$(7841): c = "OK"
         Case ChrW$(259): c = "OK"
         Case ChrW$(7855): c = "OK"
         Case ChrW$(7857): c = "OK"
         Case ChrW$(7859): c = "OK"
         Case ChrW$(7861): c = "OK"
         Case ChrW$(7863): c = "OK"
         Case ChrW$(226): c = "OK"
         Case ChrW$(7845): c = "OK"
         Case ChrW$(7847): c = "OK"
         Case ChrW$(7849): c = "OK"
         Case ChrW$(7851): c = "OK"
         Case ChrW$(7853): c = "OK"
         Case ChrW$(233): c = "OK"
         Case ChrW$(232): c = "OK"
         Case ChrW$(7867): c = "OK"
         Case ChrW$(7869): c = "OK"
         Case ChrW$(7865): c = "OK"
         Case ChrW$(234): c = "OK"
         Case ChrW$(7871): c = "OK"
         Case ChrW$(7873): c = "OK"
         Case ChrW$(7875): c = "OK"
         Case ChrW$(7877): c = "OK"
         Case ChrW$(7879): c = "OK"
         Case ChrW$(243): c = "OK"
         Case ChrW$(242): c = "OK"
         Case ChrW$(7887): c = "OK"
         Case ChrW$(245): c = "OK"
         Case ChrW$(7885): c = "OK"
         Case ChrW$(244): c = "OK"
         Case ChrW$(7889): c = "OK"
         Case ChrW$(7891): c = "OK"
         Case ChrW$(7893): c = "OK"
         Case ChrW$(7895): c = "OK"
         Case ChrW$(7897): c = "OK"
         Case ChrW$(417): c = "OK"
         Case ChrW$(7899): c = "OK"
         Case ChrW$(7901): c = "OK"
         Case ChrW$(7903): c = "OK"
         Case ChrW$(7905): c = "OK"
         Case ChrW$(7907): c = "OK"
         Case ChrW$(237): c = "OK"
         Case ChrW$(236): c = "OK"
         Case ChrW$(7881): c = "OK"
         Case ChrW$(297): c = "OK"
         Case ChrW$(7883): c = "OK"
         Case ChrW$(250): c = "OK"
         Case ChrW$(249): c = "OK"
         Case ChrW$(7911): c = "OK"
         Case ChrW$(361): c = "OK"
         Case ChrW$(7909): c = "OK"
         Case ChrW$(432): c = "OK"
         Case ChrW$(7913): c = "OK"
         Case ChrW$(7915): c = "OK"
         Case ChrW$(7917): c = "OK"
         Case ChrW$(7919): c = "OK"
         Case ChrW$(7921): c = "OK"
         Case ChrW$(253): c = "OK"
         Case ChrW$(7923): c = "OK"
         Case ChrW$(7927): c = "OK"
         Case ChrW$(7929): c = "OK"
         Case ChrW$(7925): c = "OK"
         Case ChrW$(273): c = "OK"
         Case ChrW$(193): c = "OK"
         Case ChrW$(192): c = "OK"
         Case ChrW$(7842): c = "OK"
         Case ChrW$(195): c = "OK"
         Case ChrW$(7840): c = "OK"
         Case ChrW$(258): c = "OK"
         Case ChrW$(7854): c = "OK"
         Case ChrW$(7856): c = "OK"
         Case ChrW$(7858): c = "OK"
         Case ChrW$(7860): c = "OK"
         Case ChrW$(7862): c = "OK"
         Case ChrW$(194): c = "OK"
         Case ChrW$(7844): c = "OK"
         Case ChrW$(7846): c = "OK"
         Case ChrW$(7848): c = "OK"
         Case ChrW$(7850): c = "OK"
         Case ChrW$(7852): c = "OK"
         Case ChrW$(201): c = "OK"
         Case ChrW$(200): c = "OK"
         Case ChrW$(7866): c = "OK"
         Case ChrW$(7868): c = "OK"
         Case ChrW$(7864): c = "OK"
         Case ChrW$(202): c = "OK"
         Case ChrW$(7870): c = "OK"
         Case ChrW$(7872): c = "OK"
         Case ChrW$(7874): c = "OK"
         Case ChrW$(7876): c = "OK"
         Case ChrW$(7878): c = "OK"
         Case ChrW$(211): c = "OK"
         Case ChrW$(210): c = "OK"
         Case ChrW$(7886): c = "OK"
         Case ChrW$(213): c = "OK"
         Case ChrW$(7884): c = "OK"
         Case ChrW$(212): c = "OK"
         Case ChrW$(7888): c = "OK"
         Case ChrW$(7890): c = "OK"
         Case ChrW$(7892): c = "OK"
         Case ChrW$(7894): c = "OK"
         Case ChrW$(7896): c = "OK"
         Case ChrW$(416): c = "OK"
         Case ChrW$(7898): c = "OK"
         Case ChrW$(7900): c = "OK"
         Case ChrW$(7902): c = "OK"
         Case ChrW$(7904): c = "OK"
         Case ChrW$(7906): c = "OK"
         Case ChrW$(205): c = "OK"
         Case ChrW$(204): c = "OK"
         Case ChrW$(7880): c = "OK"
         Case ChrW$(296): c = "OK"
         Case ChrW$(7882): c = "OK"
         Case ChrW$(218): c = "OK"
         Case ChrW$(217): c = "OK"
         Case ChrW$(7910): c = "OK"
         Case ChrW$(360): c = "OK"
         Case ChrW$(7908): c = "OK"
         Case ChrW$(431): c = "OK"
         Case ChrW$(7912): c = "OK"
         Case ChrW$(7914): c = "OK"
         Case ChrW$(7916): c = "OK"
         Case ChrW$(7918): c = "OK"
         Case ChrW$(7920): c = "OK"
         Case ChrW$(221): c = "OK"
         Case ChrW$(7922): c = "OK"
         Case ChrW$(7926): c = "OK"
         Case ChrW$(7928): c = "OK"
         Case ChrW$(7924): c = "OK"
         Case ChrW$(272): c = "OK"
         
      End Select
      If c = "OK" Then
        Locma2 = True
       Exit For
    End If
   Next i
End Function


Function Locma3(vnstr As String) As Boolean
Dim c As String, i As Long
Locma3 = False
   For i = 1 To Len(vnstr)
      c = Mid(vnstr, i, 1)
      Select Case c
         
         Case ChrW$(22823): c = "OK"
         Case ChrW$(9312): c = "OK"
         Case ChrW$(9313): c = "OK"
         Case ChrW$(12514): c = "OK"
         Case ChrW$(27096): c = "OK"
         
      End Select
      If c = "OK" Then
        Locma3 = True
       Exit For
    End If
   Next i
End Function
 
Bạn làm gì với nó thế? Bạn cần văn bản nào muốn chuyển thành không dấu hoàn toàn thì được, check cái này làm gì?
 
Upvote 0
Chắc là nên vầy:

PHP:
Option Explicit
Sub DoTim()
Dim Cll As Range
For Each Cll In ActiveSheet.UsedRange
    If LocMa(Cll.Value) Or LocMa2(Cll.Value) Or LocMa3(Cll.Value) Then
        If LocMa(Cll.Value) Then Cll.Interior.ColorIndex = 4
        If LocMa2(Cll.Value) Then Cll.Interior.ColorIndex = 3
        If LocMa3(Cll.Value) Then Cll.Interior.ColorIndex = 5
    Else
        MsgBox "VietNamese Error, please check again!", , Cll.Address
        Cll.Interior.ColorIndex = 38
    End If
Next
End Sub

Bạn thử thay cái ni vô hàm tự tạo của bạn xem sao:

Mã:
[B]Function LocMa(vnstr As String) As Boolean
[/B] Dim c As String, i As Long
 Const ABC As String = "ABCDEFGHIJKMLNOPQRSTUVWXYZabcdefghijklmnopqstuvwxy"
 LocMa = False
 For i = 1 To Len(vnstr)
      c = Mid(vnstr, i, 1)
      If InStr(ABC, c) Then c = "OK"
      If c = "OK" Then
            LocMa = True:                  Exit For
      End If
 Next i
[B]End Function
[/B]
 
Upvote 0
Bạn làm gì với nó thế? Bạn cần văn bản nào muốn chuyển thành không dấu hoàn toàn thì được, check cái này làm gì?

Ah, mình làm nghề dịch thuật. Mình dịch văn bản Nhật sang Việt. Cái này để mình check xem văn bản còn sót Tiếng Việt ko?
Văn bản chỉ chấp nhận Tiếng Nhật, đôi khi có vài từ tiếng Anh, tuyệt đối ko được có Tiếng Việt.
Nhưng giữa Tiếng Anh và Tiếng Việt ko dấu thì mình chưa biết cách để hàm phân biệt.
Bạn biết chỗ này giúp mình với nhé.
Cám ơn bạn nhiều.

Ah bạn ơi, sao nó chạy ko được vậy bạn?
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các bác

Mình đang ko biết để dòng [ MsgBox "VietNamese Error, please check again!" ]
này ở vị trí nào là hợp lý để khi gặp lỗi còn sót Tiếng Việt thì nó chỉ hiển thị ra 1 lần thôi. Mong các bác giúp đỡ.

Nếu vẫn muốn "của mình làm ra" thi sửa như thế này:
Mã:
Sub DoTim()
    Dim Cll As Range, i As Long, j As Long, k As Long
    Application.ScreenUpdating = False
    For Each Cll In ActiveSheet.UsedRange
        If Locma(Cll.Value) = True Then Cll.Interior.ColorIndex = 0: i = i + 1
        If Locma2(Cll.Value) = True Then Cll.Interior.ColorIndex = 3: j = j + 1


        If Locma3(Cll.Value) = True Then Cll.Interior.ColorIndex = 5: k = k + 1
    Next
    Application.ScreenUpdating = True
    If i + j + k > 0 Then MsgBox "VietNamese Error, please check again!"
End Sub
 
Upvote 0
Nếu vẫn muốn "của mình làm ra" thi sửa như thế này:
Mã:
Sub DoTim()
    Dim Cll As Range, i As Long, j As Long, k As Long
    Application.ScreenUpdating = False
    For Each Cll In ActiveSheet.UsedRange
        If Locma(Cll.Value) = True Then Cll.Interior.ColorIndex = 0: i = i + 1
        If Locma2(Cll.Value) = True Then Cll.Interior.ColorIndex = 3: j = j + 1


        If Locma3(Cll.Value) = True Then Cll.Interior.ColorIndex = 5: k = k + 1
    Next
    Application.ScreenUpdating = True
    If i + j + k > 0 Then MsgBox "VietNamese Error, please check again!"
End Sub

Ko biết mình làm gì mà bây giờ thay code của bạn hay sử dụng code cũ vẫn ko chạy được. +-+-+-+
 
Upvote 0
Ko biết mình làm gì mà bây giờ thay code của bạn hay sử dụng code cũ vẫn ko chạy được. +-+-+-+

Chắc ăn nhất là bạn nên cho FILE + CODE lên đây để kiểm tra
Viết code chay, không có gì để test ---> Làm biếng lắm (mà test cũng chắc gì đã đúng)
 
Upvote 0

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

Back
Top Bottom