在工作表之间设置变量列

时间:2015-10-15 16:35:03

标签: excel-vba vba excel

谁想轻松点?我试图使用变量设置从一个工作表到另一个工作表的列范围。 startm将始终为整数。我知道我可以做thisthis之类的事情,但我讨厌offset XD除了连接一百万个和“&”之外,还有一种“更智能”的方式吗?

For Each s In thisWB.Worksheets
...
With ws
.Columns(3:14-startm+1)=s.columns(startm:14) 'this don't work ;_;

3 个答案:

答案 0 :(得分:1)

由于您使用的是列号而不是字母,因此这里最好的方法是for循环:

For Each s In thisWB.Worksheets
...
With ws

    For col = 3 to 14-startm+1
        'may have to adjust these values in here to fit your dynamic need, but
        '  the overall idea here is sound
        .Columns(col).Value = s.Columns(col+startm).Value
    Next col
End ws
Next s

我没有在.columns()...行的后半部分对你的startm +/-东西进行逆向工程,但是在填充该空白后,这应该是你需要的。

答案 1 :(得分:1)

您可以尝试这样的事情:

Range(.Cells(1, 3), .Cells(1, 14 - startm + 1)).EntireColumn = _
   Range(Sheets(1).Cells(1, startm), Sheets(1).Cells(1, 14)).EntireColumn.Value

但没有一定的限制,可能会很慢

答案 2 :(得分:1)

根据要求,我会使用:

.Columns(3).Resize(, 14 - startm + 1).value = s.Columns(startm).Resize(, 14 - startm + 1).value