VBA開発

「ActiveSheetを文字列形式にする」処理をパーツ化する【ExcelVBA】

VBAはExcel上で動くのでメリットであり、デメリットである

エクセルVBAを使用し、新規のワークブックにデータを作成するケースは多いと考えます。

・ネットショップ用の商品マスタ生成
・POSレジシステム用の商品マスタ生成
・打刻データからの勤怠表の生成

その時に気を付けないといけないのが、セルが文字列形式になっているかどうかです。
文字列形式になっていない為、求める結果にならない場合があります。

・電話番号の先頭の0が消える   (09012345678       → 9012345678)
・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マクロ】

 

コメント

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