VBAはExcel上で動くのでメリットであり、デメリットである
エクセルVBAを使用し、新規のワークブックにデータを作成するケースは多いと考えます。
・ネットショップ用の商品マスタ生成
・POSレジシステム用の商品マスタ生成
・打刻データからの勤怠表の生成
・POSレジシステム用の商品マスタ生成
・打刻データからの勤怠表の生成
その時に気を付けないといけないのが、セルが文字列形式になっているかどうかです。
文字列形式になっていない為、求める結果にならない場合があります。
・電話番号の先頭の0が消える (09012345678 → 9012345678)
・JANコードが指数表記される (45123456789012 → 4.51235E+13)
・日付データが変換される (03-01 → 3月1日)
・JANコードが指数表記される (45123456789012 → 4.51235E+13)
・日付データが変換される (03-01 → 3月1日)
これは、Excel上で動くVBAという言語のメリットであり、デメリットです。
Excelの癖を理解しながら、プログラミングしましょう。
ActiveSheetのセルを文字列形式に変更する
単純に「セル全選択」→「右クリック」→「セルの書式設定」→「文字列」の処理をVBAで記載したのみです。
コードサンプル
'■アクティブシートを文字列形式に変更する Public Function Call_StringPaste() ActiveSheet.Cells.Select Selection.NumberFormatLocal = "@" End Function
詳しくはNumberFormatLocal について調べてください。
“@”で文字列形式にしています。
関連記事
CSVやTSV(タブ区切りテキスト)を開く場合は、開く際に文字列形式でブックオープンします。
「CSVファイルを文字列形式で開く」をパーツ化する【ExcelVBAマクロ】
「タブ区切りテキストを文字列形式で開く」をパーツ化する【ExcelVBAマクロ】
新規でブック作成してセル書式を文字列形式にする前に、ブックが開いているかのチェックをしましょう。
「ブックが開いていればActivate/なければブック作成する」処理をパーツ化する【ExcelVBAマクロ】
コメント