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

时间:2016-03-29 14:24:29

标签: excel vba excel-vba macros

我正在尝试运行一个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

2 个答案:

答案 0 :(得分:1)

很难从您的问题中判断出来,但一般情况下,如果您一次使用多张工作表,则应该在这些工作表上限定所有对单元格/范围的引用以指定哪个工作表你正在与之合作。

否则,Excel将尝试根据哪个工作表处于活动状态进行猜测,上面的代码中哪个工作表是Sheet2。 (ActiveWorkbook.Worksheets(&#34; Sheet2&#34;)。在顶部激活将其设置为ActiveSheet)

例如,要引用工作表1上的单元格:

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

或者,您可以将几个变量调暗以引用两个表,这可能使代码更容易阅读:

Dim shtA as Worksheet
Dim shtB As Worksheet

Set shtA = Sheets("Sheet1")
Set shtB = Sheets("Sheet2")

shtA.Cells(1, 3) = col1

希望有所帮助!

答案 1 :(得分:0)

我最终必须重建它并销毁前一个dev中的所有垃圾代码。一旦我重新开始,指定要处理的工作表,当它不是活动工作表时解决了我的问题。我的宏功能完美。

谢谢Leowyn的先发制人。