VBA 全角半角混在の英数字を統一する(Str Conv関数)

入力時のExcel環境によりアルファベットが半角であったり全角であったり統一性がないデータを集計すると誤った集計がされてしまうことがある。

特に複数のデータベースを使って作業をする場合は文字列を統一しておくこと。

 

Sub Macro21()
Cells(2, 1) = StrConv(Cells(1, 1), 8)
End Sub

1丁目246番地の3
1丁目246番地の3

 

Str Conv関数

StrConv(string、 Conversion)

string:変換したい文字列

Conversion:変換したい形式(引数:指定する値の合計値)

定数はVBA記述時、リストアップされ値に変えて入力できます

定数 説明
vbUpperCase 1 文字列を大文字に変換
vbLowerCase 2 文字列を小文字に変換
vbProperCase 3 文字列内のすべての単語の最初の文字を大文字に変換
vbWide 4 文字列の半角 (1 バイト) 文字を全角 (2 バイト) 文字に変換
vbNarrow 8 文字列の全角 (2 バイト) 文字を半角 (1 バイト) 文字に変換
vbKatakana 16 文字列に含まれるひらがなの文字をカタカナに変換
vbHiragana 32 文字列のカタカナ文字をひらがなに変換
vbUnicode 64 システムの既定のコードページを使用して、文字列をUnicodeに変換
vbFromUnicode 128 文字列を Unicode からシステムの既定のコードページに変換

VBA Format関数

データベースに日付を入力したいことは頻繁にあるがその時、活躍するのがFormat関数です。例えばファイル名に今日の日付を使いたい場合にも簡単にできます。

Sub Macro1()

Cells(1, 1) = Format(Now, yyyymmdd)
Cells(2, 1) = Format(Now, "yyyymmdd")

Cells(3, 1) = Format(Now, yyyymd)
Cells(4, 1) = Format(Now, "yyyymd")

End Sub

2020/4/20
20200420
2020/4/20
2020420

 

新しく保存するファイル名が既存のファイル名と同じになってしまうと上書きするか聞かれますが「いいえ」を押すとエラーになってしまいます。

例えばVBAの検証時など小変更を加えるたびに保存したいファイル名のあとに追加しておけば時系列的に管理もでき便利です。

Sub Macro2()  

Cells(11, 1) = Format(Now, "hhnnss")   

Cells(12, 1) = Format(Now, "hns")

End Sub

9時8分3秒の場合:

90803
983

もちろん、作成するデータベース上でもいろんな活用方法があります。

 Sub Macro3()

Cells(21, 1) = Format(Now, "Long Date")

Cells(22, 1) = Format(Now, "aaaa")

Cells(23, 1) = Format(Now, "aaa")

Cells(24, 1) = Format(Now, "ggg" & "e" & "年" & "m" & "月" & "d" & "日")

Cells(25, 1) = Format(Now, "ggg" & "e" & "年" & "oooo" & "d" & "日")

End Sub

2020年4月20日
月曜日
令和2年4月20日
令和2年4月20日