目标是搜索特定的列标题。在这种情况下,“付费到日期”(仅限完全匹配)并在其前面插入一个新列并命名。 即使它在那里,这个公式也不会拿起列。但是如果我将查找(what:=“付费到日期”)更改为另一列,例如“关闭日期”..它的工作原理..然后我试过其他专栏和一些工作,有些不... ..想弄清楚这是什么原因?
Sheets(NewSheet).Select
Set ColHeaders = Range("A4:CD4").Find(What:="Paid to Date", LookIn:=xlValues, LookAt:=xlWhole)
If ColHeaders Is Nothing Then
MsgBox "Paid to Date Column was not found."
Exit Sub
Else
Columns(ColHeaders.Column).Insert
Cells(4, ColHeaders.Column - 1).Value = "Paid On " & Month(Range("D2")) & "/" & Day(Range("D2"))
答案 0 :(得分:0)
使用application.match
代替更可靠的字符串位置。
dim var as variant
with workSheets(NewSheet)
var = application.match("Paid to Date", .rows(4), 0)
if not iserror(var) then
.columns(var).entirecolumn.insert
.cells(4, var) = format(.cells(2, "D"), "\P\a\i\d \O\n mm/dd")
end if
end with
在原始代码中,您没有为.Find操作提供足够的参数来克服用户可能已更改的设置(并且正在继承到VBA操作中。