从工作表中的button启动macros是否会改变vba如何交互代码?

下面的代码工作正常,当我从vba编辑器运行它。 当我把这个macros指定给一个button时,它不会像写入那样复制列。 代码的其他部分工作?

是否有一些关于分配的macros改变了代码的解释?

Sub copy_ids_user_output() ' copy the first column to the last column Dim last_col As Integer last_col = Worksheets("usersFullOutput.csv").Cells(1, Columns.Count).End(xlToLeft).column Debug.Print last_col Columns(1).Copy Columns(last_col + 1) Worksheets("WorkStation").Range("B9").Value = Now() MsgBox "id's copied to last col in email logs sheet" End Sub¨ 

如果我理解得好,你有:

  1. 放置在Worksheets("WorkStation")的可点击button;
  2. Worksheets("usersFullOutput.csv")一列Worksheets("usersFullOutput.csv") ,您希望在同一工作表的末尾进行复制

如果是这种情况,最有可能的是你有这样的行为,因为你没有在执行副本的代码行中引用工作表:

 Columns(1).Copy Columns(last_col + 1) 

意思是:

  • 当你从VBA编辑器运行时,你正在看工作表usersFullOutput.csv所以上面这行代码在这张表上执行;
  • 当您从button运行时,您正在观察WorkStation ,因为您没有参考上述行中的任何工作表,所以假定在其他工作表上执行。

如果这是问题,只需添加工作表参考:

 Worksheets("usersFullOutput.csv").Columns(1).Copy Worksheets("usersFullOutput.csv").Columns(last_col + 1) 

如果这不是问题,请澄清你的工作表,我会相应地删除/修改我的答案。

Ps的信息,无论如何,您的标题问题的答案是“从表单中的button启动一个macros改变vba交互代码? 是不,它不是; 但不添加对variables的引用会改变VBA解释它们的方式,因为它select了默认值,而这些值并不总是相同的