文字列を適切なケースで変換する VBA マクロを作成していますが、いくつかの制限があります。
冒頭のテキスト:
- DTest dk;G3Gj
- _dsc0148A
- 1陶器2
- Articiart147
- あなたがそれを必要としない場合
- 押された喜び
- オンザフロア
望ましい結果:
- Dtest Dk;G3gj
- _Dsc0148a
- 1陶器2
- Articiart147
- 必要ない場合
- 押された_喜び
- オンザフロア
試行 1:
Sub ChangePCase()
rownum = 2
colnum = 1
ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)).Select
For Each Cell In Selection
mystr = Cells(rownum, colnum).value
Text = WorksheetFunction.Proper(mystr)
Cells(rownum, colnum + 1) = Text
rownum = rownum + 1
Next
End Sub
結果
- Dtest Dk;G3Gj
- _Dsc0148A
- 1陶器2
- Articiart147
- イフ・ユー・ドント・ニード・イット
- 押された_喜び
- オンザフロア
一部の文字は、数字または特殊文字の後に大文字になります。
特殊文字の後の文字を大文字にしないように制限する方法はありますが、単語の最初の文字が特殊文字の場合、2 番目の文字は 2 番目の数字として大文字にする必要があります。
試行 2:
私の他のコードはより良い結果をもたらしますが、特殊文字の後の単語の2番目の文字を大文字にしません。出力付きのコードは
Sub Propername()
rownum = 2
colnum = 1
ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)).Select
For Each Cell In Selection
Text = Trim(StrConv(Cells(rownum, colnum).value, vbProperCase))
Cells(rownum, colnum + 1) = Text
rownum = rownum + 1
Next
End Sub
結果
- Dtest Dk;k3kj
- _dsc0148a
- 1陶器2
- Articiart147
- イフ・ユー・ドント・ニード・イット
- 押された喜び
- 床の上で
2 番目と 3 番目の 2 番目の文字は大文字ではありませんが、6 p の喜びも大文字ではありません。