2012-04-20 30 views
5

Tôi khá mới với và tôi đang cố gắng tìm ra cách xác định mã bưu điện nằm trong phạm vi mà một ký tự thay đổi. Ví dụ: Tôi muốn xem mã bưu chính có nằm giữa 2G82P8 hay không.Cần phải xác định giữa phạm vi mã bưu chính

Nói cách khác, phạm vi của những gì tôi đang tìm kiếm sẽ 2_8 nơi nhấn có thể G-P, nhưng tôi không biết làm thế nào để xác định rằng trong mã.

Tôi thực sự đánh giá cao một số trợ giúp để tìm ra cách tiếp cận vấn đề này. Cảm ơn!

Trả lời

7

Bạn có thể sử dụng chức năng VBA Mid để rút ra từng ký tự và xác thực nó theo quy tắc kinh doanh của bạn. Dưới đây là một ví dụ về cách nó có thể trông:

Function ValidatePostalCode(code As String) 
    ValidatePostalCode = _ 
     (Mid(code, 1, 1) = "2") And _ 
     (Mid(code, 2, 1) >= "G" And Mid(code, 2, 1) <= "P") And _ 
     (Mid(code, 3, 1) = "8") 
End Function 

Chức năng này sẽ trả về một giá trị của True hoặc False nêu rõ đầu vào là hợp lệ.

+0

+1 cho các giải pháp làm việc đầu tiên – brettdj

+0

1 Đồng ý với brettdj :) –

9

LIKE tránh lặp lại chuỗi thử nghiệm

1. Simple thử nghiệm

Function ValidString(strIn As String) As Boolean 
ValidString = strIn Like "2[G-P]8" 
End Function 

2. Trường hợp phiên bản Insensitive

Function ValidString(strIn As String) As Boolean 
ValidString = LCase$(strIn) Like LCase$("2[G-P]8") 
End Function 
+1

+1 Đã đồng ý. My 'VBA' bị rỉ sét :) – mellamokb

+1

Cảm ơn rất nhiều, đã hoạt động rất dễ dàng. Bây giờ, vấn đề chính tôi gặp phải là tôi có rất nhiều phạm vi mà tôi phải lọc qua vì vậy tôi phải tạo ra một chức năng riêng biệt cho từng loại. – user960358

+1

Bạn có thể đặt các dải ô trong một mảng và lặp lại và kiểm tra xem có bất kỳ dải nào trong số chúng phù hợp hay không. – mellamokb

Các vấn đề liên quan