Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-跨选项卡循环(相同的选项卡结构,不同的行数)_Vba_Excel - Fatal编程技术网

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

VBA-跨选项卡循环(相同的选项卡结构,不同的行数),vba,excel,Vba,Excel,我只是冒险进入VBA,所以请原谅我,如果我问了一个简单的问题,一个简单的解决方案,已经在这个网站上解决了。我已经寻找了一个解决方案,但没有找到任何有用的 我使用的是一个人员配置电子表格,该表格为我们部门的每个人都有一个选项卡,每个工作表列出了每月分配的所有活动项目和小时数。我每月都会将上个月的专栏提前到下一年,我希望尽可能多地自动化这些工作 我在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

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

要复制任何长度的列的范围,如果您知道在底部之前不会有空白单元格,则:

Range("a1", Range("a1").End(xlDown)).Copy
基本上,这与单击a1并按Ctrl+Shift+DownArrow键相同

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

Range("a1", Range("a100000").End(xlUp)).Copy
这只是向下走了很长一段路,然后按ctrl+upArrow键到达最下面一行


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

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