【发布时间】:2020-02-13 09:34:11
【问题描述】:
我正在尝试(但失败)让一些代码在每个工作表上运行,除了一个特定的工作表。我希望代码只剪切单元格 n2:s2 中的数据并将其粘贴到 t1:y1 中,然后对在 n3:s3、n4:s4、n5:s5 列中具有数据的任何其他行重复此操作。
一旦没有数据(我相信第 6 行),它应该移动到下一张表(“报告”表除外)。 我调试时面临的问题是它按预期移动数据,然后在同一张纸上重新开始,因此用空单元格覆盖数据。
Sub MovethroughWB()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets 'This statement starts the loop
If ws.Name <> "Report" Then 'Perform the Excel action you wish (turn cell yellow below)
Range("N2:S2").Select
Selection.Cut Destination:=Range("T1:Y1")
Range("T1:Y1").Select
Range("N3:S3").Select
Selection.Cut Destination:=Range("Z1:AE1")
End If
Next ws
End Sub
我确定它是基本的,但找不到什么!
【问题讨论】:
-
在
if之后使用With ws,在End if之前使用End With在其他情况下,Excel 会在活动表中执行所有操作 -
哇 - 我认为它有效 - 现在只是测试它 - 感谢 Teamothy
-
我说得太早了..不确定发生了什么,但它不再工作了:(我的代码是 Sub MovethroughWB2() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets '这个语句开始loop If ws.Name "Report" Then '执行您希望的 Excel 操作(将下面的单元格变为黄色) With ws Range("N2:S2").Select Selection.Cut Destination:=Range("T1:Y1") Range("T1:Y1").Select Range("N3:S3").Select Selection.Cut Destination:=Range("Z1:AE1") End With End If Next ws End Sub