gpt4 book ai didi

excel - 为什么我收到 'type mismatch' 错误?

转载 作者:行者123 更新时间:2023-12-03 02:20:22 26 4
gpt4 key购买 nike

我正在尝试将一个工作簿的范围复制到另一个工作簿中的表以捕获生产数据。我能够复制正确的范围并成功打开带有表格的工作簿。但是,当它尝试将信息粘贴到表中的下一个可用行时,我收到错误 13。我对 vba 相当陌生,似乎找不到解决方案,任何帮助将不胜感激。

Dim wbTime As Workbook
Set wbTime = ThisWorkbook

Dim wbData As Workbook

Dim N As Long
N = Cells(Rows.Count, "A").End(xlUp).Row + 1

Dim UsdRws As Long
UsdRws = Cells.Find("*", After:=Range("A32"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

wbTime.ActiveSheet.Range("A6:O" & UsdRws).Copy

Set wbData = Workbooks.Open("S:\Lean Carrollton Initiative\Allen\Buffering Interrupters\1st Shift\B10\Data.xlsx")

wbData.ActiveSheet.Paste Destination:=Worksheets(Sheet1).Range(N & "A")

wbData.Close SaveChanges:=True
End Sub

最佳答案

Destination1:=Worksheets(Sheet1).Range(N & "A")

@QHarr correctly identified Range(N & "A") 的问题,并针对您在 Worksheets(Sheet1) 中遇到的类型不匹配错误提出了修复方案。

我只是想更详细地解释正在发生的事情,超出了一个小评论框的范围。

Sheet1 是一个隐式声明的 Worksheet 类型的对象变量,其编译时标识符由工作表的 (Name) 属性确定工作表:

Sheet1 properties toolwindow showing the (Name) property

如果将此属性值更改为 SummarySheet,则 Sheet1 不再是有效标识符,并且 SummarySheet 变为有效标识符 -这就是为什么在每个模块的顶部指定 Option Explicit 很重要,因为没有它,VBA 将愉快地编译和运行,只不过现在 Sheet1 是非法的,它现在是一个未定义的Variant/Empty值,可以意外地传递,这会使事情变得非常难以调试(这同样适用于任何未声明的变量,而不仅仅是工作表代号)。

因此 Sheet1 是一个 Worksheet 对象引用。如果 Worksheet 有一个默认成员,该成员返回其 Name 属性的值,您的代码将正常工作。

但是 Worksheet 没有默认成员,因此 Worksheets(Sheet1) 正在传递 Worksheet对象引用作为 Worksheets.Item 索引器的参数(隐式 - 因为 Worksheets确实有一个默认成员,其 Item 属性),它需要一个 Variant 来保存工作表的名称(Variant/String)或数字索引(Variant/Integer 变体/长)。

Worksheet 对象传递给 Worksheets.Item 会引发类型不匹配错误。

因此,假设 Sheet1 工作表是预期目标,这将修复它(对 QHarr 之前识别的 Range 参数错误进行抽象):

wbData.ActiveSheet.Paste Destination:=Sheet1.Range(...)

永远不需要从 Worksheets 集合中检索编译时存在于 ThisWorkbook 中的工作表。

请注意,在原始代码中:

Destination1:=Worksheets(Sheet1).Range(N & "A")

由于 Worksheets 未限定,因此它所属的 Workbook 不明确:如果该代码写在 ThisWorkbook 中,则 Worksheets 是对 Me 的成员调用,即 ThisWorkbook.Worksheets。否则,它“方便地”隐式引用当前恰好处于事件状态的任何工作簿,这对于代码来说通常是一个危险的假设。

关于excel - 为什么我收到 'type mismatch' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com