对于更直接的正确文本格式-Excel VBA有什么建议吗

对于更直接的正确文本格式-Excel VBA有什么建议吗,vba,excel,formatting,Vba,Excel,Formatting,我正在为我工作的非营利机构的客户服务部创建一个工作簿,该工作簿将自动执行格式化过程。他们会将数据复制/粘贴到工作簿中,运行过程,然后复制/粘贴并导入数据库 其中一个过程是获取诸如名字和姓氏等字段,并将它们转换为“适当”或“标题”案例格式。下面的代码是我目前执行这个过程的方式,但我忍不住认为必须有一种更直接的方式。我找过了,但没找到 请把你的智慧借给我 'Proper Format Range("AS1:BA" & myLR).FormulaR1C1 = "=PROPER(RC[-28])

我正在为我工作的非营利机构的客户服务部创建一个工作簿,该工作簿将自动执行格式化过程。他们会将数据复制/粘贴到工作簿中,运行过程,然后复制/粘贴并导入数据库

其中一个过程是获取诸如名字和姓氏等字段,并将它们转换为“适当”或“标题”案例格式。下面的代码是我目前执行这个过程的方式,但我忍不住认为必须有一种更直接的方式。我找过了,但没找到

请把你的智慧借给我

'Proper Format
Range("AS1:BA" & myLR).FormulaR1C1 = "=PROPER(RC[-28])"
Range("BB1:BB" & myLR).FormulaR1C1 = "=PROPER(RC[-26])"

Range("Q2:Y" & myLR) = Range("AS2:BA" & myLR).Value
Range("AB2:AB" & myLR) = Range("BB2:BB" & myLR).Value

Columns("AS:BB").Delete Shift:= xlToRight

万一你想在每个单元格中循环,用这个,它很快

Sub Button1_Click()
    Dim MyLr As Long, rng As Range, c As Range

    MyLr = Cells(Rows.Count, "Q").End(xlUp).Row
    Set rng = Range("Q2:Y" & MyLr)

    For Each c In rng.Cells
        c = StrConv(c, vbProperCase)
    Next c

End Sub

这是相当不错的。您可以将范围加载到数组中,操作数组并将数组重写为范围,但这对于您所拥有的可能不是必需的。作为@ScottHoltzman,任何其他答案都需要循环,并且取决于数据,它将比您的方法慢。太棒了,感谢您的回复。我去看看!