PDA

View Full Version : check credit cards



lior03
10-12-2007, 12:26 PM
hello
i am trying to built audf that will tell if a given c.c number is valid.
i must have seven digets.it must begin with 4580 and the fifth diget can not be 0.my code:

Function visanumber(num As Integer) As Boolean
If Len(num) <> 7 Or Left(num, 4) <> 4580 Or Left(num, 5) = 0 Then
visanumber = False
End If
End Function

thanks

mikerickson
10-12-2007, 12:43 PM
Function visanumber(num As Integer) As Boolean
If (Len(CStr(num)) <> 7) Or (Left(CStr(num), 4) <> "4580") Or (Mid(CStr(num), 5,1) = "0" Then
visanumber = False
End If
End Function

Paul_Hossler
10-12-2007, 04:27 PM
Another way



Function visanumber(num As Long) As Boolean
visanumber = num Like "4580[!0]##"
End Function

'Characters in pattern Matches in string
'? Any single character.
'* Zero or more characters.
'# Any single digit (0?9).
'[charlist] Any single character in charlist.
'[!charlist] Any single character not in charlist.

Sub aaa()

MsgBox visanumber(4580099) ' false 0 in 5th
MsgBox visanumber(4580199) ' true
MsgBox visanumber(9581099) ' false not 4580 leading
MsgBox visanumber(580099) ' false only 6 char
End Sub


Paul

mdmackillop
10-13-2007, 02:47 AM
Look for card + validation +vba on google
http://www.freevbcode.com/ShowCode.asp?ID=6418

david000
10-13-2007, 07:57 PM
J-Walk's formula; page 494 Excel 2000 Formulas

John Walkenback explains the in and outs of this (Credit Card) algorithm really nicely if you can get a copy of the book...

{=IF(MOD(SUM(INT((MID(REPT("0",16-LEN(A2))&A2,ROW(INDIRECT("1:16")),1)*(MOD(ROW(INDIRECT("1:16")),2)+1)/10)+MOD((MID(REPT("0",16-LEN(A2))&A2,ROW(INDIRECT("1:16")),1)*(MOD(ROW(INDIRECT("1:16")),2)+1)),10))),10)=0,"VALID","INVALID")}