はじめに
ExcelVBAを使って顧客のダミーデータを
指定した数だけ出力するマクロを作ります
今回作るもの
氏名
佐藤 翔太
鈴木 拓也
高橋 健太
...
...
...
↑このようなものを再現するために
氏名
wbv liji
kdg ksgf
nik gshv
...
...
...
↑このような【a~z 3文字】【半角スペース】【a~z 4文字】を指定した数だけ出力するVBAを作ります
ステップ1
拡張子【xlsm】のファイルをデスクトップ上に作ります
ファイル名をダミーデータに変更します
ステップ2
下記のように入力します
※開発タブ→挿入→ボタンをクリックでボタン生成
ステップ3
開発タブ→Visual Basicを押しVBA画面を開きます
MicroSoftExcelObjects(右クリック)→挿入→標準モジュール→Module1を開き、VBAを記述します
Sub make_dummy_name()
Dim num
num = Cells(2, 4)
Dim i
For i = 2 To 1 + num
Cells(i, 1) = 1
Next
End Sub
ステップ4
Excel画面に戻ります
マクロ実行ボタンを右クリック→マクロの登録→make_dummy_nameをOKを選択しマクロ実行ボタンを押します
↓のように人数があっていることを確認します
ステップ5
VBA画面を開きます
VBAを追記します
Sub make_dummy_name()
Dim num
num = Cells(2, 4)
Dim dummy_name As String 'ダミーネーム宣言
Dim i
Dim j
For i = 2 To 1 + num
For j = 1 To 8
If j <> 4 Then
'4文字目以外はアルファベット小文字を結合
dummy_name = dummy_name + CStr(chr(make_lowercase_ascii_number))
Else
'4文字目は半角スペースを結合
dummy_name = dummy_name + " "
End If
Next
Cells(i, 1) = dummy_name
dummy_name = "" 'ダミーネーム初期化
Next
End Sub
Function make_lowercase_ascii_number()
Randomize '乱数系列初期化
make_lowercase_ascii_number = Int(Rnd * 25 + 97) '97~122の範囲で乱数を生成
End Function
※Tips
ASCIIコード【10進数 97~122】はアルファベットa~z
chr(数値)でASCIIコード【10進数】に対応する文字をChar型として取得できる
CStr(【Char型】)でChar型→String型に型変換できる
ステップ6
Excel画面に戻りマクロ実行ボタンを押します
ダミーデータが取得できました
おわりに
ASCIIコードの【10進数】→【文字】の変換を覚えると便利です