Named Arguments No
Asc( string) AscB( string) AscW( string) string
Data Type: String
Any expression that evaluates to a string. Return Value
An integer that represents the character code of the first character of the string. The range for the returned value is 0-255 on non-DBCS systems, but -32768-32767 on DBCS systems.
Returns the ANSI or Unicode character code that represents the first character of the string passed to it. All other characters in the string are ignored. Use AscB with Byte data and AscW on Unicode (DBCS) systems.
• The string expression passed to the function must contain at least one character, or a runtime error (either "Invalid use of Null" or "Invalid procedure call or argument") is generated.
• Only the first character of the string is evaluated by Asc, AscB, and AscW.
• Use the AscW function to return the Unicode character of the first character of a string.
• Use the AscB function to return the first byte of a string containing byte data. Example
Dim sChars As String Dim iCharCode As Integer sChars = TextBox1.Text If Len(sChars) > 0 Then
Asc, AscB, AscW Functions 129
iCharCode = Asc(sChars)
MsgBox "The first character must be uppercase" End If End If
Programming Tips & Gotchas
• Always check that the string you are passing to the function contains at least one character using the Len function, as the following example shows:
If Len(sMyString) > 0 Then iCharCode = Asc(sMyString)
MsgBox "Cannot process a zero-length string" End If
• On platforms which don't support Unicode, the AscW function performs exactly the same as Asc.
• Surprisingly, although the VB Object Browser clearly shows that the data type of the parameter passed to the Asc function is String, it can actually be any data type. Evidently the Asc routine converts incoming values to strings before extracting their first character.
• Use Asc within your data validation routines to determine such conditions as whether the first character is upper- or lowercase and whether it's alphabetic or numeric, as the following example demonstrates:
Private Sub CommandButton1_Click()
Dim sTest As String Dim iChar As Integer sTest = TextBox1.Text
MsgBox "The first character is UPPERCASE" ElseIf iChar >= 97 And iChar <= 122 Then
MsgBox "The first character is lowercase" Else
MsgBox "The first character isn't alphabetical" End If Else
MsgBox "Please enter something in the text box" End If
• Use the Asc function and its converse, Chr, to create rudimentary encryption methods. Once you have obtained the character code for a particular character, you can perform calculations on this code to come up with a different number and then convert this to a character using the Chr function. To decrypt your string, simply reverse the calculation. Be sure, though, that your
130 Chapter 7- The Language Reference calculation doesn't generate character codes less than 20, since these are special nonprinting characters, which, if displayed or printed, can cause undesirable effects.
Private Sub CommandButton2_Click()
Dim MyName As String, MyEncryptedString As String Dim MyDecryptedString As String Dim i As Integer
MyName = "Paul Lomax"
MyEncryptedString = MyEncryptedString & _
MsgBox "Hello, my name is " & MyEncryptedString
MyDecryptedString = MyDecryptedString & _ Chr(Asc(Mid(MyEncryptedString, i, 1)) - 25) Next i
MsgBox "Hello, my name is " & MyDecryptedString End Sub
Was this article helpful?