こんにちは、Ryoです。
前回No.1でご紹介しましたバーコード生成プログラムの内、
「a.バーコード文字生成」について解説していきたいと思います。
ちなみにNo.1の記事はこちらになります。
1.Excel画面
Excelシート画面内の「B5」「D5」「D8」セルに入力された情報を使い、
文字を連結して「B13:D13」に表示させます。
2.コード全体
コード全体は以下の通りです。
Sub Character_generation() Dim Bcode, CompType As String Dim Code As Variant Dim D As Long Dim rng As Range Range(Cells(13, 2), Cells(13, 4)).ClearContents Set rng = Range("B5:D5") If WorksheetFunction.CountA(rng) < 3 Then MsgBox "バーコード生成に必要な情報が入力されていません", vbCritical Exit Sub End If '//文字生成時に入力されている欄をクリアにする// Call Clear_bc code = Cells(5, 2) '//Typeの頭文字を抜き取る// CompType = Mid(Cells(5, 4), 1, 1) D = Format(Cells(8, 4), "yyyymd") '//各々読み込んだデータを連結// Bcode = CompType & code & D '//連結した文字列を指定セルに表示する// Cells(13, 2) = Bcode End Sub
では、各コードについて解説致します。
3.コード解説
ここではバーコード化したい文字を読み込み連結する処理を行っています。(くどい?)
上述のコード全体から解説毎に切り分けてる都合上、行番号が不整合になってますが、
ご容赦くださいませ。
先ず最初に生成文字のクリアを実施。
Range(Cells(13, 2), Cells(13, 4)).ClearContents
必要データ範囲をRangeとしてセットし、CounAにて入力有無を
カウントして空欄があれば警告表示します。
Set rng = Range("B5:D5") If WorksheetFunction.CountA(rng) < 3 Then MsgBox "バーコード生成に必要な情報が入力されていません", vbCritical Exit Sub End If
必要な情報が入力されていれば、既に生成されたバーコード画像有無等を確認し
あればクリアする処理するプログラムを呼び出して実行します。
Call Clear_bc
今回のサンプルでは「Type」に入力された情報の頭文字を先頭とし、
以降に「code」情報と「日付」データを連結したものをバーコード文字としています。
「Number」は製品で言う型式のイメージでバーコード上部に情報として表示します。
「code」情報を対象セルから読み込みます。
code = Cells(5, 2)
「Type」情報を対象セルから読み込み、Midコマンドにて先頭文字を抜き取ります。
CompType = Mid(Cells(5, 4), 1, 1)
対象セルに入力された「日付」情報のフォーマットを指定し、数字の羅列に変更します。
(2017年7月12日 ⇒ 2017712)
D = Format(Cells(8, 4), "yyyymd")
各データを連結してバーコード文字とし、対象セルに表示します。
Bcode = CompType & code & D Cells(13, 2) = Bcode
ここまでの処理が「バーコード文字生成」ボタンに登録した内容ですので、
押すことで連結した文字が表示されます。
以上がバーコード化したい文字列の連結処理解説です。
次回のNo.3ではフォントへの置換と画像化処理を実施しますので、
宜しくお願いします。
Ryo