【发布时间】:2020-03-14 09:31:27
【问题描述】:
如何在 Excel VBA 中复制特定范围值? 我试图通过首先创建一个输入框让用户在另一个工作簿中输入该范围来复制一个范围,然后将该范围的值从所有选定的工作簿复制到一个工作簿中。
这是我所拥有的,但它只复制一组值。
FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter (*.csv), *.csv", Title:="Open File(s)", MultiSelect:=True)
nw = UBound(FileNames)
Workbooks.Open FileNames(1)
Set UserRange = Application.InputBox(Title:="Select Range", Prompt:="Range", Default:=DefaultRange, Type:=8)
For i = 1 To nw
Set FileNames(i) = ActiveWorkbook
UserRange.Copy
tWB.Worksheets("Data").range("A" & i).PasteSpecial Transpose:=True
Next i
编辑:我只需要打开一个工作簿,将 UserRange 定义为范围,并将该范围内的值复制到所有选定的工作簿中,然后将它们粘贴到 tWB 工作簿中。
【问题讨论】:
-
那是因为你的代码就是这样写的。
UserRange永远不会改变,你永远不会打开新的工作簿(打开应该在循环内)。 -
然后使用
UserRange.Address。您仍然需要一个循环来打开其他工作簿 -
您需要一个循环来按照您的说明打开“所有选定的工作簿”。
Application.GetOpenFilename不会打开您选择的工作簿。 -
@BigBen,我添加了一个循环来打开每个工作簿,现在结果是准确的 - 谢谢!我选择的每个工作簿都单独打开,这允许代码每次复制不同的值。
-
好东西!干杯和快乐的编码。