VBAによるテストデータの自動生成(連番)

概要

VBAを使ったテストデータの自動生成の検討記事です。
今回は連番の自動生成です。

検討

自動生成するにあたり、必要となる条件(ルール)と具体的な例を書き上げてみます。

データ生成のネタ

連番の自動生成のための条件を挙げてみました。

条件名 内容
範囲 連番の最小値、最大値を指定します。
増分 連番の増分値を指定します。
構成 連番の構成を指定します。
長さ 連番の長さを指定します。
生成件数 テストデータの生成件数を指定します。

他にもいろいろ考えられますが
最初から複雑にすると息切れしてしまうので
伸びしろは残しておきましょう。

具体的な例

条件設定の具体的な例を示します。
さらに後半においてこの例でサンプル実装してみます。

項目 条件(ルール)
最小値 1
最大値 99999
増分 1
構成 ‘CUS’ + ‘000000[‘連番’]
長さ 8

上記の例の場合、実際の値は、CUS00001、CUS00002、CUS00003…のように自動生成されるイメージになります。

実装例

サンプルコード

値は自動生成した後、検証のためExcelシートに書き出す仕様とします。

実際にテストデータ作成ツールとして使用する際には
他の項目の値も同時に生成して
レコード単位でデータを書き込むような実装になると思います。

コード

Sub make01()

    '----- 生成条件のする値の条件設定 -----
    '最小値
    Dim start_val As Integer
    start_val = 1
    '最大値
    Dim end_val As Integer
    end_val = 999
    '増分
    Dim add_val As Integer
    add_val = 1
    '構成(頭文字CUS+数値)
    Dim head_str As String
    head_str = "CUS"
    '長さ
    Dim item_len As Integer
    item_len = 8 - Len(head_str)
    '生成件数
    Dim data_count As Integer
    data_count = 100

    '生成したテストデータを展開するシート
    Dim p As Worksheet
    Set p = Worksheets("連番データ")
    Dim pcount As Integer
    pcount = 0
    
    Dim i As Integer

    '----- 自動生成部分 -----
    '最小値から件数分、処理を繰り返す
    For i = start_val To data_count Step add_val
    
        'データシートの編集位置算出
        pcount = pcount + 1
        'データデータ数
        p.Cells(pcount, 1) = pcount

        'データ連番データ生成
        p.Cells(pcount, 2) = head_str & Format(i, String(item_len, "0"))
    
    Next

    End

End Sub
説明

全体的な説明はコメントを参照
実際に自動生成している箇所は33行めと41行めです。
33行め:最小値からデータ生成件数分の処理の繰り返しと増分値決定
41行め:値を自動生成して、Excelシートへセット

実行結果

Excelシートに自動生成した値がセットされています。
(1行め~100行め)





いきなりテストデータ生成用のツールを作るのではなく
本ページのように機能毎に部品化して開発すると
生成可能な値を目で検証しながら成長させつつ
汎用的なツールを構築していくことが出来ます。

タイトルとURLをコピーしました