【问题标题】:VBA - Looping across tabs (same tab structure, different number of rows)VBA - 跨选项卡循环(相同的选项卡结构,不同的行数)
【发布时间】:2015-06-09 23:26:19
【问题描述】:

我只是冒险进入 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

【问题讨论】:

  • 您的问题似乎与“如何在给定范围或工作表中可靠地找到 最后一行”有关 - 请参阅关闭原因中链接到的答案。如果您在实施该解决方案时遇到问题,请提出一个新问题,但请包括您正在使用的代码和您遇到的具体问题。干杯。
  • 我可以问一个愚蠢的问题吗?为什么不拥有一个包含所有原始数据的主 XL 表,然后使用 VBA 为使用主数据表的每个员工生成一个新选项卡。每次发布时都运行宏。宏仅基于 now() 将相关数据复制到员工选项卡。只有主 XL 表有主数据...(像数据库一样思考,按需生成报告 [员工标签]...)
  • 感谢大卫和 zipzit 的回复。 @David - 我将通读您发布的链接,看看是否可以从文档中提取我需要的内容。这与我的情况不太一样,因为我不是要查找工作表上的最后一行,而是要查找包含项目信息的最后一行。在最后一个项目之外还有包含信息的行。 zipzit - 我很喜欢,但这是经理操纵和输入信息的文档。我必须让每个人都参与做出这样的改变,我对此持开放态度,但会进行组织转变。
  • 好的。我将重新打开问题,但我认为您应该显示您当前正在使用的代码以及您需要帮助的代码的哪一部分。您可以使用.CurrentRegion.Rows.Count 调整“Q4”的范围。
  • 听起来不错,我用我的代码更新了原始帖子,该代码移动了工作簿中每个选项卡的列。我还没有继续编写清除单元格的代码,因为我真的不知道从哪里开始。如果这会更有帮助,我会发布一张图片,但我认为我不被允许考虑我对这个网站有多新。我可以在这里发布一个 imgur 链接吗?

标签: vba excel


【解决方案1】:

如果你想要一个快速简单的答案,那么这是我的 2 美分

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

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

基本上和点击 a1 并按 Ctrl+Shift+DownArrow 一样

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

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

这只是一个很长的路要走,并执行 ctrl+upArrow 以到达最后一行。

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

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多