title: Generate unique serial number incrementally
body: <p>I am writing a vb.net program to generate a three digit serial number I will use in printing a barcode.</p>
  
  <p>The requirements are the counter must count:</p>
  
  <p>001 - 999, A00 - A99, B00 - B99, ..., Z00 - Z99</p>
  
  <p>I cannot use the letters O and I</p>
  
  <p>This code simply increments the value I pass to it by 1. I first check if the value is &lt;=998 and if so return the value in 3 digits. I had to put this in a Try statement because passing the value 'A00' caused an error.</p>
  
  <p>The code is still breaking once I hit Z99.</p>
  
  <p>Problem:  If the next serial number = Z90 and the user wants to print 35 barcodes I need to stop the operation before it begins and warn the user there are only 10 avail serial numbers remaining</p>
  
  <p>Also, I am also hoping for advice on how I could have accomplished this in a better manner, any advice would be greatly appreciated</p>
  
  <pre><code>    Public Shared Function NextSerial(ByVal value As String) As String
  
      Try
          If value &lt;= 998 Then
              value += 1
              Return ZeroPad(value, 3)
          End If
  
      Catch ex As Exception
  
      End Try
      Const chars As String = "ABCDEFGHJKLMNPQRSTUVWXYZ"
      Dim threenumber As String = ZeroPad(value, 3) 'ensure value is 3 digits.
      Dim alpha As String = threenumber.Substring(0, 1).ToUpper() ' 1st digit
      Dim beta As String = threenumber.Substring(1, 2) 'remaining two digits
      Dim newNumber As String
      Dim nextletter As String
  
      If beta = "99" Then
          beta = "00"
          nextletter = chars.Substring((chars.IndexOf(alpha, System.StringComparison.Ordinal) + 1), 1)
          newNumber = nextletter + beta
          Return newNumber
  
      Else
          beta += 1
          newNumber = alpha + ZeroPad(beta, 2)
          Return newNumber
  
      End If
  End Function
  
  Private Shared Function ZeroPad(ByVal number As String, ByVal toLength As Integer) As String
      ZeroPad = number
  
      'add the necessary leading zeroes to build it up to the desired length.
      Do Until Len(ZeroPad) &gt;= toLength
          ZeroPad = "0" &amp; ZeroPad
      Loop
  End Function
  </code></pre>