2017-06-21 84 views
0

目標是搜索特定的列標題。在這種情況下,「付費日期」(僅限完全匹配)並在其之前插入一個新列並命名。 這個公式沒有拿起列,即使它在那裏..但如果我改變查找(什麼:=「支付日期」)到另一列,如「關閉日期」..它的工作原理..但後來我嘗試其他專欄和一些工作,有些不試圖找出這是什麼原因?爲什麼Range.Find僅適用於某些列名稱? VBA

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

'注視:= xlWhole'對於單元格中的多餘空格很敏感,請嘗試使用'LookAt:= xlPart'來查看這是否是失敗原因。 –

+0

是否隱藏了任何列? –

+0

@ASH不起作用:( –

回答

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操作

+0

謝謝你完美的工作!但是,我忘了提及我想從另一個特定列(列AI)複製粘貼到這個新插入的c olumn。我將如何參考這個? 。 用我以前的代碼,這是它是如何定義: LR =細胞(Rows.Count, 「AI」)結束(xlUp).Row 範圍(將細胞(5,ColHeaders.Column - 1),將細胞( lr,ColHeaders.Column - 1))= Range(Cells(5,「AI」),Cells(lr,「AI」))。Value –

相關問題