gpt4 book ai didi

vba - Excel VBA With 语句返回类型不匹配

转载 作者:行者123 更新时间:2023-12-03 02:46:54 25 4
gpt4 key购买 nike

我创建了一些 VBA 代码来从名为“水平数据”的电子表格中获取填充数据并将其粘贴到名为“总体规划数据”的工作表中,但是 with Workbooks(wb1) 抛出类型不匹配错误,是吗?我在这里做错了什么吗?

Dim WBA as Variant    
Dim WB1, WB2 As Workbook
Dim L As Long

Set WB2 = ThisWorkbook

MsgBox "Select Master Plan File"
WBA = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.XLSX), *.XLSX", _
Title:="Select Master Plan File")
If WBA = False Then
MsgBox "You have not selected a file"
Exit Sub
End If
Set WB1 = Workbooks.Open(WBA)

WB2.Activate
With Worksheets("Master Plan Data")
.Rows("2:100000").Clear
End With


'ERROR BEGINS HERE
With Workbooks(WB1) ' <-- Getting Type Mismatch here
Worksheets("HORIZONTAL_DATA").Cells.Select
Selection.Copy
End With

最佳答案

Workbooks 对象当然可以用于查找工作簿。但是,它需要数字索引或工作簿名称本身:

Workbooks(42)
Workbooks("paxsheet.xls")

您已经拥有想要使用的工作簿,它位于 WB1 中,因此您无需再去寻找它。

所以改变:

With Workbooks(WB1)  '  <-- Getting type mismatch here '

进入:

With WB1             '  <-- Should not get type mismatch here '

一切都应该很好。

<小时/>

而且,除了立即出现的错误之外,由于您想要使用该工作簿内的工作表,因此您需要通过在其前面加上 前缀来指定。:

With WB1
.Worksheets("HORIZONTAL_DATA").Cells.Select
Selection.Copy
End With

此外,假设您除了该副本之外不需要保留选择,您可以直接复制它,无需先选择:

With WB1
.Worksheets("HORIZONTAL_DATA").Cells.Copy
End With

但是,当然,使用 with 就变得毫无用处,所以你可能只想将整个事情简化为:

WB1.Worksheets("HORIZONTAL_DATA").Cells.Copy

关于vba - Excel VBA With 语句返回类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26351216/

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