概要
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行め)


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