【发布时间】:2016-06-01 10:54:51
【问题描述】:
在我的 Excel 表上,我有一个命令按钮 (GrabMyData),它可以抓取、复制数据到工作簿 (thisWB)。现在,当我按下此命令按钮时,数据会出现在列的“顶行”上。但是,在 excel VBA 编辑器上,当我按下运行/子用户窗体播放按钮时,数据会出现在列上的“最后一行”数据中,这就是我想要的。那么,为什么我的命令按钮没有执行运行/子播放按钮正在执行的操作?我认为它们都具有相同的功能。请注意,我已将宏命令按钮正确分配给相关工作簿。请指教。
Sub GrabMyData()
Dim myWB As Workbook
Dim thisWB As Workbook
Dim thisWS As Worksheet
Dim lastRow As String
Application.ScreenUpdating = False
Set myWB = Workbooks.Open("C:\Users\jjordan\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\GTER232\TEST.csv")
myWB.Sheets("Sheet 1").Range("A8:F17").Copy
Set thisWB = ThisWorkbook
Set thisWS = ThisWorkbook.Sheets("Sheet 5")
thisWB.Activate
lastRow = ActiveSheet.Cells(Rows.Count, "H").End(xlUp).Row
thisWS.Range("H" & lastRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
With Application
.CutCopyMode = False
.ScreenUpdating = True
End With
myWB.Close
End Sub
【问题讨论】:
-
所以目的地不同吧?看起来在代码中目的地被计算为
lastRow,对吧?您可以尝试在值上使用调试打印,所以Debug.Print lastRow?你还需要使用 ActiveSheet,我会用ThisWorkbook.Worksheets("foo")的名字来固定那个吸盘。 -
是的,目的地不同。是的,它被计算为 lastRow,因为我希望导入的数据出现在列范围内的最后一行,而不是列范围内的顶行。所以,我假设 vba 编辑器中的运行/子用户按钮,即使它做了我想要的,如果宏按钮做不同的事情,代码仍然是错误的?我会按照您的建议进行更改,看看会发生什么。
-
不幸的是,我仍然得到相同的结果。
-
用这个WS替换ActiveSheet。
-
@S Meaden,谢谢!现在可以了。所以,这是一个小的调整。但是需要经验才能知道在哪里寻找。再次感谢!