Vba 将行中的每个值复制到另一个值匹配的工作簿?
我有两本作业本 工作手册AVba 将行中的每个值复制到另一个值匹配的工作簿?,vba,excel,Vba,Excel,我有两本作业本 工作手册A Supplier Name Date Supplier A Jun-17 Supplier B Jun-17 Supplier C May-17 工作手册B Supplier Name Supplier A Supplier B 我正在尝试复制所有供应商名称,这些名称与6月17日的日期相匹配。 6月17日写在B1单元中名为(资产)的表格上 我犯了一个错误 Object doesn't support
Supplier Name Date
Supplier A Jun-17
Supplier B Jun-17
Supplier C May-17
工作手册B
Supplier Name
Supplier A
Supplier B
我正在尝试复制所有供应商名称,这些名称与6月17日的日期相匹配。
6月17日写在B1单元中名为(资产)的表格上
我犯了一个错误
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
有人能告诉我哪里出了问题吗?像这样试试
If Format(ThisWorkbook.Worksheets(1).Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then
运行时错误可以使用已经提出的建议进行更正(工作表(1)应用于标识
范围(“O”&j)
,而不是格式的的父项),但这并不意味着您的代码可以工作。作为真实日期,2017年6月17日
的原始值为42903<代码>格式(42903,“mmm”)
以文本字符串的形式返回“Jun”
。文本Jun不等于42903
如果两者都是资产!B1和“工作簿A”第O列中的日期为真实日期,那么您只需比较它们的原始值即可“复制所有供应商名称,使其与6月17日的日期相匹配”
除此之外,使用AutoFilter选择2017年6月17日日期的所有行将更有效。看见甚至对已关闭的工作簿使用索引/匹配函数对也可能更可取。非主题提示:出错时继续下一步
可能会使调试变得异常困难。这是因为它对您隐藏了错误。考虑在测试过程中对此进行注释,如果可能的话,重构代码以捕获,而不是抑制错误。您确定应该是<代码>此工作簿吗?工作表(“资产”)< /代码>?您没有打开名为PAI Monthly Audits.xlsx的工作簿吗?
If ThisWorkbook.Worksheets(1).Range("O" & j).Value2 = ThisWorkbook.Worksheets("assets").Range("b1").Value2 Then