#566 文字列がCODE39のバーコードで使えるかチェックする VBA

Accessのレポートでは、バーコードコントロールを使うことで、いくつかの形式のバーコードを印刷することができます。その中のひとつの形式が「CODE39」です。

ただしCODE39は、半角の数字、半角の大文字アルファベット、いくつかの記号と、使用可能な文字が限られています。そこで、引数で指定した文字列がCODE39として使用可能かどうかを判別するFunctionプロシージャのサンプルを紹介します。

以下のプロシージャでは、使用不可な文字がひとつでも含まれていたら「その文字列はCODE39には使えない」ということで「False」を返します。すべて使用可能であれば「True」を返します。

public Function IsCode39Available(strData As String) As Boolean

  'CODE39で使用可能な文字の羅列を定数で宣言
  Const cstrAvailableChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"
  Dim iintLoop As Integer

  '使用可能な文字か1文字ずつチェックするループ
  For iintLoop = 1 To Len(strData)
    If InStr(1, cstrAvailableChar, Mid$(strData, iintLoop, 1), vbBinaryCompare) = 0 Then
      '使用不可の文字がひとつでも含まれていたらFalseを返す
      IsCode39Available = False
      Exit Function
    End If
  Next iintLoop

  '使用不可の文字がひとつも含まれていなければTrueを返す
  IsCode39Available = True

End Function


※InStr関数における文字の比較においては、引数に「vbBinaryCompare」を指定しないと、半角全角の違いがチェックされません。たとえば「A(全角)」も「A(半角)」も同じであると判断されてしまいますので、今回の場合はこの引数は必須となります。


実行例:
イミディエイトウィンドウでの実行例
2つめの例では、「2」が全角となっているので返り値はFalseとなります。
3つめの例では、「_」はCODE39で使えないので返り値はFalseとなります。
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved