MICROSOFT

EP03. “Convert to Proper Case 转换成首字母大写”

首页 Microsoft 工具 Excel · VBA · String Manipulation · EP03
约 3 分钟· #EP03#Excel#String Manipulation
🔒 登录后可标记已读
  • 写一个宏,把选中范围里的文字都转成「每个单字首字母大写、其余小写」的格式
  • 处理时会跳过含有公式的单元格,不去动它,避免破坏原有公式
  • 前置知识:For Each 循环和 cell.HasFormula 判断
  • 学完能自己写「批量转换选中范围格式,同时跳过公式格」的宏

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Dim rng As Range, cell As Range

Set rng = Selection

For Each cell In rng
    If Not cell.HasFormula Then
        cell.Value = WorksheetFunction.Proper(cell.Value)
    End If
Next cell

逻辑说明

  • Set rng = Selection:把使用者目前选中的范围存起来
  • For Each cell In rng:逐一走过范围里的每个单元格
  • If Not cell.HasFormula Then:只处理「不是公式」的单元格——如果这格本身是公式算出来的结果,直接跳过不动它,避免把公式改写成写死的文字
  • WorksheetFunction.Proper(cell.Value):调用 Excel 的 PROPER 函数,把文字转成首字母大写格式

学完你会

  • ✅ 用 Selection 拿到使用者当前选中的范围
  • ✅ 用 For Each...Next 逐格处理一个 Range
  • ✅ 用 cell.HasFormula 判断该跳过哪些单元格,保护公式不被覆盖

常见错误

  • 漏掉 If Not cell.HasFormula 判断,把含公式的单元格也直接覆盖成文字,公式被破坏
  • 选取范围时选到了标题行,标题文字的大小写也被意外改掉
  • 以为 WorksheetFunction.Proper 可以处理整个范围,实际上要靠循环逐格调用

Sources

Blog / Website:

  1. Convert to Proper Case