【问题标题】:Command button and run/sub user form button not in sync命令按钮和运行/子用户表单按钮不同步
【发布时间】: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,谢谢!现在可以了。所以,这是一个小的调整。但是需要经验才能知道在哪里寻找。再次感谢!

标签: vba excel


【解决方案1】:

您是否尝试将 thisworkbook 更改为 workbooks("workbook name")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多