仕事でバーコードを簡単に表示させたいという事があって、エクセルVBAで作ってみました。
C#あたりでも考えてみましたが、バーコードの表示にコンポーネントやら必要で、有料っぽいのでやめました。
とりあえずやりたいことは出来ましたので、簡単なコードですが記録しときます。
概要
code39の表示・名前を選択してcode39のバーコードを表示させる。
・名前には4桁の数字が紐付されている。
code128の表示
・10桁の数字を入力してcode128のバーコードを表示させる。
・10桁かつ数字の場合にバーコードを表示させる。
◆作成準備
- エクセルを開いてシート名を"ID"に変更
- A列に1から連番を振る
- B列に名前を記入
- C列に名前に対応するIDを記入
- [ctr]+[F11]でVBAを起動
◆フォームの作成
- [プロジェクトエクスプローラー]→[Microsoft Excel Objects]→右クリック→挿入→ユーザーフォーム
- プロパティからフォームのオブジェクト名を「barcode」に変更
- 各コントロールを配置する
名称 | 種類 | 内容 |
lbl1 | ラベル | 名前ラベル |
cmdName | コンボボックス | エクセルのB1~B最下行を参照して選択 |
barcode39 | バーコード | cmdNameで選択した名前のIDをバーコード表示 |
frm1 | フレーム | code39用のフレーム |
lbl2 | ラベル | №ラベル |
txtNumber | テキストボックス | code128に変換する数字 |
barcode128 | バーコード | txtNumberに入力した数字をバーコード表示 |
frm2 | フレーム | code128用のフレーム |
btnClose | ボタン | フォームを閉じるボタン |
◆コードの記述
フォーム表示コード- [プロジェクトエクスプローラー]→[Microsoft Excel Objects]→[ThisWorkbook]→右クリック→コードの表示
- 下のソースコードを記載
'ブックが開いたときにフォームをモードレス表示 Sub workbook_open() barcode.Show vbModeless End Sub
メインコード
- [プロジェクトエクスプローラー]→[Microsoft Excel Objects]→[フォーム]→[barcode]→右クリック→コードの表示
- 下のソースコードを記載
Option Explicit '閉じるボタンクリックでフォームを閉じる Private Sub btnClose_Click() Unload Me End Sub 'code39動作' 'コンボボックスが選択されたら実行' Private Sub cmbName_Change() Dim target As Double Dim code As String '選択された名前のインデックスを格納 target = cmbName.ListIndex + 1 '名前に紐付されているIDを格納 code = Cells(target, 3).Value If code <> "" Then barcode39.Value = code Else barcode39.Value = "" End If End Sub 'code128動作' 'テキストボックスに値が入力されたら実行' Private Sub txtNumber_Change() Dim Number As String Number = txtNumber.Value '数字(IsNumeric)かつ10桁(Len)かつ半角(StrConv)の場合にはバーコード表示' If (IsNumeric(Number)) And (Len(Number) = 10) And (Number = StrConv(Number, vbNarrow)) Then barcode128.Value = Number Else barcode128.Value = "" End If End Sub 'ユーザーフォーム初期化' Private Sub UserForm_Initialize() Dim lRow As Integer 'A列の最下行を検索' lRow = Cells(Rows.Count, 1).End(xlUp).Row 'コンボボックスの表示内容格納' cmbName.RowSource = "ID" & "B1:" & "B" & lRow 'バーコードの表示領域変更' With barcode39 .Height = 55 .Width = 200 .Left = 12 End With With barcode128 .Height = 55 .Width = 200 .Left = 12 End With End Sub
完成状態
コンボボックスから名前選択するとバーコード表示
10桁の数字を入力するとバーコード表示