我有两本工作簿。
练习册A
Supplier Name Date
Supplier A Jun-17
Supplier B Jun-17
Supplier C May-17
练习册B
Supplier Name
Supplier A
Supplier B
我正在尝试复制与Jun-17日期相匹配的所有供应商名称。 Jun-17写在单元格B1中名为(assets)的工作表上。
我收到错误
Object doesn't support this property or method.
在这一行:
If ThisWorkbook.Worksheets(1).Format(Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then
我的代码:
Sub Monthly()
On Error Resume Next
UserForm1.Show
If Format(Range("O211").Value, "mmm") = Worksheets("assets").Range("b1").Value Then
MsgBox "Yes"
End If
Dim WB As Workbook
On Error Resume Next
Set WB = Workbooks("PAI Monthly Audits.xlsx")
On Error GoTo 0
If WB Is Nothing Then
Set WB = Workbooks.Open("G:\QUALITY ASSURANCE\03_AUDITS\PAI\templates\PAI Monthly Audits.xlsx", UpdateLinks:=False)
End If
With ThisWorkbook.ActiveSheet
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
j = 6
For i = 2 To LastRow
If ThisWorkbook.Worksheets(1).Format(Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then
.Range("B" & i).Value = ThisWorkbook.Worksheets(1).Range("B" & j).Value
j = j + 1
End If
Next i
End With
End Sub
请有人告诉我哪里出错了吗?
答案 0 :(得分:1)
尝试这样......
If Format(ThisWorkbook.Worksheets(1).Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then
答案 1 :(得分:0)
可以使用已经提出的建议更正运行时错误(ThisWorkbook.Worksheets(1)
应该用于标识Range("O" & j)
的父级,而不是Format
的父级,但这并不意味着您的代码将工作。作为真实日期,17-Jun-2017
的原始值为42,903。 Format(42903, "mmm")
将"Jun"
作为文本字符串返回。文字 Jun 不等于42903。
如果Assets!B1和'Workbook A'列O中的日期都是真实日期,那么您只需比较其原始值'以复制与Jun-17日期相匹配的所有供应商名称”。
If ThisWorkbook.Worksheets(1).Range("O" & j).Value2 = ThisWorkbook.Worksheets("assets").Range("b1").Value2 Then
除此之外,使用AutoFilter选择2017年6月17日的所有行将更有效。见Using cell values as a date range autofilter。即使对已关闭的工作簿使用INDEX / MATCH函数对也是可取的。