muốn tạo add in tìm mã số cmnd với kiểu dữ liệu số 0xxxxx

Liên hệ QC

chanmenhanmay

Thành viên mới
Tham gia
22/3/10
Bài viết
25
Được thích
0
chào các bạn
mình có một hàm định nghĩa nhưng làm hoài không ra mong các bạn cứu bồ với
bt: minh có một dãy số cmnd và muốn dựa vào dãy cmnd đó để tìm ra nơi cấp vd 3 số đầu 351 là an giang, nhưng khi làm tới số 021,022,023 của hcm thì nó lại không hiểu và mình nhập giá trị vào phần Case la 080 thi sau đó lại bỏ đi số 0 đầu tiên còn 08 nên lệnh không thực hiện được
các bạn xem add in mình đính kèm nhen
 

File đính kèm

  • macmndd.rar
    15.1 KB · Đọc: 197
4 cái sai:
- Số CMND có trường hợp có số 0 ở đầu, mà Function macmnd(maso As Double), nó vất số 0 đầu là chắc chắn.
- Lấy left(maso, 3), ra 3 ký tự, mà select case 20, 21, 22 chỉ có 2 ký tự
- Lấy left ra kêt quả text mà select case toàn là số, lẽ ra phải là "360", "125", ...
- Coi maso là double, thì số 0 đầu bị mất. Mà lấy left, thì left(021022023, 3) sẽ là "210" chứ có phải 021 đâu mà làm gọn là 21?
 
4 cái sai:
- Số CMND có trường hợp có số 0 ở đầu, mà Function macmnd(maso As Double), nó vất số 0 đầu là chắc chắn.
- Lấy left(maso, 3), ra 3 ký tự, mà select case 20, 21, 22 chỉ có 2 ký tự
- Lấy left ra kêt quả text mà select case toàn là số, lẽ ra phải là "360", "125", ...
- Coi maso là double, thì số 0 đầu bị mất. Mà lấy left, thì left(021022023, 3) sẽ là "210" chứ có phải 021 đâu mà làm gọn là 21?
bạn có thể sửa được hông chứ mình cũng hông rành lắm , định dạng case mình đánh là 021 nhưng khi enter xuống dòng thì nó lại là 21
nên vì thế mình mới cần phải gỡ rối đó bạn , loay hoay cả đêm rùi
mong thỉnh giáo

thanks
 
Sửa lại như sau:

Mã:
Function macmnd(maso As [COLOR=red]String[/COLOR])

và đánh dấu nháy vào tất cả các case: "125", "360", ... Còn các số 2 chữ số thì sửa thành "020", "021", "025", ...
 
Sửa lại như sau:

Mã:
Function macmnd(maso As [COLOR=red]String[/COLOR])

và đánh dấu nháy vào tất cả các case: "125", "360", ... Còn các số 2 chữ số thì sửa thành "020", "021", "025", ...
Bạn ơi mình cũng đã thử với cách đó nhưng hình như trong định dạng case không cho sử dụng dấu " " , bạn thử lại giúp minh nha
thanks nhiều luôn đó
 
Bạn ơi mình cũng đã thử với cách đó nhưng hình như trong định dạng case không cho sử dụng dấu " " , bạn thử lại giúp minh nha
thanks nhiều luôn đó
Thường tôi thử rồi mới viết bài. Vả lại, không bao giờ VBA chỉ cho phép dùng select case với số mà không cho dùng với chuỗi.
- Bạn đã thay As Double thành As String chưa?
- Dữ liệu CMND của bạn nếu có số 0 đầu bạn có dùng dấu ' không? Thí dụ '021202023?
 
Bài này sao không dùng hàm MATCH cho sướng nhỉ
Ví dụ thế này:
PHP:
Function macmnd1(maso As String) As String
  Dim Ma(), Noi(), vt As Long
  On Error Resume Next
  macmnd1 = "SAI 3 SO DAU HOAC CHUA CAP NHAT"
  Ma = Array("011", "020", "031", "060", "070", "080", "090", _
             "100", "112", "113", "121", "125", "132", "135", "141", _
             "145", "151", "162", "164", "168", "170", "171", "181", _
             "183", "190", "191", "194", "197", "200", "201", "205", _
             "212", "215", "220", "225", "230", "233", "240", "245", _
             "250", "261", "264", "270", "270", "273", "280", "285", _
             "290", "290", "301", "310", "321", "331", "334", "341", _
             "351", "360", "363", "365", "370", "381", "385")
  Noi = Array("HNO", "HCM", "HPH", "YBA", "TQU", "CBA", "TNG", _
              "QNI", "HTA", "HBI", "BGI", "BNI", "PTH", "VPH", "HDU", _
              "HYE", "TBI", "NDI", "NBI", "HNA", "BKA", "THO", "NAN", _
              "HTI", "LCA", "TTH", "QBI", "QTR", "LSO", "DNA", "QNA", _
              "QNG", "BDI", "PYE", "KHO", "GLA", "KON", "DLA", "DNO", _
              "LDO", "BTH", "NTH", "DNI", "SLA", "BRV", "BDU", "BPH", _
              "HGA", "TNI", "LAN", "TGI", "BTR", "VLO", "TVI", "DTH", _
              "AGI", "CTH", "HGI", "STR", "KGI", "CMA", "BLI")
   vt = WorksheetFunction.Match(Left(maso, 3), Ma)
   If vt Then macmnd1 = Noi(vt - 1)
End Function
Select Case dài lòng thòng
-----------------------
Tuy nhiên trong phần quy định về mã và nơi cấp có chút sai sót:
- Mã đầu 270 vừa là DNI lại vừa là SLA
- Mã đầu 290 vừa là HGA lại vừa là TNI
Sửa lại chổ này nhé! Và khi sửa xong phải đặt lại vị trí cho chính xác ---> Vì dùng hàm MATCH theo kiểu dò không chính xác nên Array Ma đang được sort tăng dần
 
không được bạn ơi, mình đã thử cả rồi
bạn xem lại dùm mình nhen
 
không được bạn ơi, mình đã thử cả rồi
bạn xem lại dùm mình nhen
Vầy đi cho dễ nha! Bạn nói "không được" mình cũng chẳng biết nó "không được" thế nào!
Thôi thì bạn cứ gữi cái file đang "không được" đấy lên đây nhé!
 
Web KT
Back
Top Bottom