According to [MSDN](http://msdn.microsoft.com/en-us/library/ms234766.aspx), this function is already implemented: <!-- lang: lang-vb --> ' Code from MSDN ' Dim myString As String = "ABCDE" Dim myChar As Char ' The value of myChar is "D". myChar = myString.Chars(3) <hr> **A review of your code** - Please indent your code. - I would choose another, more meaningful name for your function: `getCharAt` or `getByteFromString`. It is now clear that the function operates on a string. - I would use the clearer parameter name `str` instead of `s`. - "Compress": place = place + 1 getbyte = Mid(s, place, 1) ' change to getbyte = Mid(s, place + 1, 1) The first version is definitely not wrong or ugly, but why use an extra line if we could express the same logic in the same clear manner? - You could use [`If`](https://stackoverflow.com/a/576466/603003) to shorten your code: Private Function getbyte(str As String, ByVal place As Integer) As String getbyte = If(place < Len(str), Mid(str, place + 1, 1), "") End Function