所有三张纸在第1行中都有相同的列标题。在工作簿的第一张和第二张纸上(标题为"每月"和"年度"分别),我正在使用根据公式确定的值,条件格式化为Y和AC列中的单元格着色(如果计算返回小于90的值,则为黄色;如果返回的值为0,则为红色,或者为负数)。我希望宏做的是将整个行从A列复制到AD列到第三张(标题为" Maint Due")。如果这个过程是自动化的,那么任何时候Y和AC列中的值在"每月"中发生变化也是很好的。或"年度"表格," Maint Due"工作表是自动更新的(但是如果我必须手动重新运行宏来实现它并不是什么大问题)。
我从未使用过宏录制器,我只能弄清楚如何创建一个复制和粘贴的宏,所以我没有运气。在做了一些搜索和观看一些视频后,我拼凑了这个:
Sub Show_on_Maint()
x = 2
'Sets the starting row
Do While Cells(x, 2) <> ""
'Continue to evaluate until a blank cell is reached
If Cells(x, 25) <= 90 Then
'Evaluates the cell in column Y to determine if the value
' is less than or equal to 90
Sheets("Monthly").Rows(x).Copy Sheets("Maint Due").Range("A2")
'Copies the row to the Maint Due sheet
Else
If Cells(x, 29) <= 90 Then
'Evaluates the cell in column AC to determine if the value
' is less than or equal to 90
Sheets("Monthly").Rows(x).Copy Sheets("Maint Due").Range("A2")
'Copies the row to the Maint Due sheet
End If
End If
x = x + 1
Loop
End Sub
当我运行/调试它时,我得到一个没有Do错误的循环。我认为我的逻辑是合理的,但我没有足够的经验来弄清楚为什么我会收到这个错误。
编辑:修复了在x = x + 1
之前缺失的结束现在我收到运行时错误9&#34;下标超出范围&#34;在:Sheets("Sheet1").Rows(x).Copy Sheets("Sheet6").Range("A2")
编辑:固定工作表名称。宏现在运行没有错误,但似乎没有做任何事情。为简洁起见,还编辑了主要帖子。
答案 0 :(得分:0)
您的代码段包含多个错误。第一个没有Do错误的循环&#39;已在评论中修复。第二个,&#39;下标超出范围&#39;是自我描述性的,因此请通过添加
来检查x+1
的最大值
Debug.Print x = x + 1
到你的循环。另外,请确保您没有在复制语句中引用不存在的工作表(即Sheets("Sheet6"
))。
希望这会有所帮助。