Vba 在Excel中使用宏替换列标题文本

Vba 在Excel中使用宏替换列标题文本,vba,excel,Vba,Excel,我试图用以下代码将B列和C列中的标题替换为不同的标题文本: Columns("B").Replace What:="PN-ASSIGN", _ Replacement:="SERV BAL.", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ Matc

我试图用以下代码将B列和C列中的标题替换为不同的标题文本:

   Columns("B").Replace What:="PN-ASSIGN", _
                         Replacement:="SERV BAL.", _
                         LookAt:=xlPart, _
                         SearchOrder:=xlByRows, _
                         MatchCase:=False, _
                         SearchFormat:=False, _
                         ReplaceFormat:=False

Columns("C").Replace What:="MISC COST", _
                         Replacement:="EQUIP BAL.", _
                         LookAt:=xlPart, _
                         SearchOrder:=xlByRows, _
                         MatchCase:=False, _
                         SearchFormat:=False, _
                         ReplaceFormat:=False
但是当我尝试使用它时,代码似乎什么都没做。我不确定我错过了什么


任何帮助都将不胜感激

您需要对工作表进行限定,因为听起来您的宏依赖于活动工作表,这是一种不好的做法。如果多次引用您的
ws
,则可以使用
With
语句。此外,您不需要为
.Replace
方法指明所有选项。如果未指定,则默认为false。以下代码应足够

另外,
选项显式
用于良好测量

Option Explicit

Sub Headers()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")

ws.Range("B:B").Replace "PN-Assign", "Serv Bal.", xlPart
ws.Range("C:C").Replace "MISC COST", "EQUIP BAL.", xlPart

End Sub

代码对我有用。我想知道我在复制问题时遗漏了什么?它们是合并的单元格吗?请确认您的工作表-如果您的书本上有多个单元格,则宏可能在错误的工作表上运行。您实际引用的单元格内容很可能与
What:=
参数不匹配。这是因为实际内容(非打印字符或空格)还是因为列工作表引用,很难从您提供的信息中分辨出来。也许,如果你上传一份工作表,向某个公共网站(删除敏感信息)展示问题,并在这里发布一个链接(通过编辑你的问题),你会得到更好的帮助。是的,它运行在错误的工作表上。哈哈,愚蠢的错误,谢谢你们的帮助!我应该使用With语句,还是只需执行以下操作:Dim ws as Worksheet ws=Sheets(“Sheet1”)ws.Columns(“B”)。Replace?太棒了!非常感谢。