VBA - 跨选项卡循环(相同的选项卡结构,不同的行数)

时间:2015-06-09 23:26:20

标签: excel vba excel-vba

我只是冒险进入VBA,所以请原谅我,如果我用一个已经在本网站上解决的简单解决方案提出一个简单的问题。我已经找到了解决方案,但我找不到任何有用的东西。

我正在使用人员配置电子表格,其中包含我们部门中每个人的标签,每个工作表列出了按月分配的所有活动项目和小时数。我每个月将前一个月的列向前移动到下一年,我希望尽可能多地自动完成这项工作。

我在VBA中写了一个循环来削减上个月并将其向下移动,但我需要帮助编写代码,让我清除我正在移动的列中特定范围内的单元格。问题是每个选项卡都有不同数量的项目,所以我不能简单地编写清除单元格Q4:Q12的代码,因为结尾单元格会因标签而异。在所有工作表中都有一行是一致的,但我不确定如何在VBA中写入以清除所有单元格。

任何帮助将不胜感激!谢谢!

编辑 - 这是我目前正在使用的代码。

Sub MoveColumn()

    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Staffing Summary" Then
                ws.Columns("F:F").Cut
                ws.Columns("R:R").Insert Shift:=xlToRight
        End If
    Next ws

Application.CutCopyMode = False

End Sub

1 个答案:

答案 0 :(得分:0)

如果您正在快速简单回答,那么这是我的2美分

要知道任何长度的列的范围,当您知道在底部之前不会有空白单元格时:

Range("a1", Range("a1").End(xlDown)).Copy

基本上与点击a1并执行Ctrl + Shift + DownArrow

相同

如果有空白行,那么一个不太好但可行的解决方案是:

Range("a1", Range("a100000").End(xlUp)).Copy

这只是很长的路要走ctrl + upArrow来到底线。

可能有更多雄辩的想法,但我一直都在使用这些。