我正在编写 VBA 宏,它将在适当的情况下转换字符串,但有一些限制。
开头文字:
- DTest dk;G3Gj
- _dsc0148A
- 1陶器2
- Articiart147
- 如果你不需要它
- Pressed_pleasure
- 在地上
期望的结果:
- Dtest Dk;G3gj
- _Dsc0148a
- 1陶器2
- Articiart147
- 如果你不需要它
- Pressed_Pleasure
- 在地上
尝试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
- 如果你不需要它
- Pressed_Pleasure
- 在地上
一些字符在数字或特殊字符之后得到大写。
我如何限制特殊字符之后的字符不是大写,但是如果单词的第一个字符是特殊字符,那么第二个字符应该是大写作为第二个数字。
尝试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
- 如果你不需要它
- Pressed_pleasure
- 在地上
在第二个和第三个字符中,第二个字符不是大写,而在 6 p 中,快乐也不是大写。