使用VBA在Excel工作簿中的第二个工作表上运行循环

我试图运行一个Do While循环来连接Sheet2上的Sheet2的三列上我的工作簿,我想我是如何引用我的第二个工作表正在跳闸,因为在第一张表上运行此代码给了我积极的结果, 任何帮助将非常感激。

ActiveWorkbook.Worksheets("Sheet2").Activate Dim noSep As String noSep = "" Cells(1, 3) = col1 Cells(1, 30) = col2 Cells(1, 32) = col3 Cells(1, 63) = colconcatenated x = 2 Do While Worksheets("Sheet2").Cells(x, col1) <> "" Cells(x, coloncatenated) = Cells(x, col1) & noSep & Cells(x, col2) & noSep & Cells(x, col3) x = x + 1 Loop Columns("BK:BK").EntireColumn.AutoFit 

很难从您的问题中得知,但是一般来说,如果您一次处理多个工作表,则应该对所有对这些工作表上“单元格/范围”的引用进行限定,以指定您正在处理的工作表。

否则,Excel将尝试根据哪个表处于活动状态进行猜测,这在您的代码中是Sheet2。 (ActiveWorkbook.Worksheets(“Sheet2”)。在顶部激活将其设置为ActiveSheet)

因此,例如,要引用表1中的单元格:

 Worksheets("Sheet1").Cells(1,3) = col1 

或者,您可以将几个variables调暗以引用两张表,这可能会使代码更易于阅读:

 Dim shtA as Worksheet Dim shtB As Worksheet Set shtA = Sheets("Sheet1") Set shtB = Sheets("Sheet2") shtA.Cells(1, 3) = col1 

希望有所帮助!

我最终不得不基本重build它,并销毁所有从以前的开发代码。 一旦我开始,指定工作表,当它不是活动工作表解决了我的问题。 我的macros运行完美。

谢谢Leowyn先生。