select工作簿并查找/replace

这个post其实有两个问题。 先谢谢你。

我的第一个问题是,我似乎无法让Excelselect名为“(DATES)-Usage”的Excel工作簿,其中(DATES)每天更改。

第二个问题是.Replace对象给我和Run-Time error '438': Object doesn't support this property method 。 请有人看看,告诉我我犯了什么错误。 再次感谢你!

 Sub UsersBySource_Update() ' Create variables Dim ws As Worksheet Dim wb As Workbook Dim unspecified As String Dim organic As String Dim TheString As String, Cohort As Date ' Ask user for cohort date and return an error if invalid date is entered TheString = Application.InputBox("Please Specify The Cohort:") If IsDate(TheString) Then Cohort = DateValue(TheString) Else MsgBox ("Invalid Date") End If ' Set variables unspecified = "[Unspecified]" organic = "Organic" ' Activate the workbook For Each wb In Workbooks If wb.Name Like "*-Usage" Then wb.Activate End If Next ' Find and Replace the unspecified and organic variables in the workbook ActiveSheet.Replace What:=unspecified, Replacement:=organic, LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False ' Add Columns and Row to fix formatting to continue Columns("B:E").Insert shift:=xlToRight Range("B2").EntireRow.Insert ' Copy and Paste initial date range to start program Range("A3").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=True, Transpose:=False End Sub 

你需要改变

 ActiveSheet.Replace What:=unspecified, Replacement:=organic, LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False 

以下

 ActiveSheet.Cells.Replace What:=unspecified, Replacement:=organic, LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False 

现在你说你想找一张像(DATES)-Usage那样的工作 ,但是你正在看工作簿:

  For Each wb In Workbooks If wb.Name Like "*-Usage" Then wb.Activate End If Next 

试试这样:( 编辑)

  For Each ws In Worksheets If ws.Name Like "*-Usage" Then Exit For End If Next 

符合MSDN: replace ,是一个范围方法。

所以,而不是这个:

 ActiveSheet.Replace What:=unspecified, Replacement:=organic, LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False 

尝试这个:

 ws.Cells.Replace What:=unspecified, Replacement:=organic, LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False 

干杯。

改变这些线

 Range("A3").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False 

到这些线

 With ActiveSheet .Range(Range("A3"), Range("A3").End(xlDown)).Copy .Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True End With Application.CutCopyMode = False 

你不需要所有的Select方法。