gpt4 book ai didi

vba - For Each/Next 循环不会遍历所有工作表

转载 作者:行者123 更新时间:2023-12-03 00:09:13 26 4
gpt4 key购买 nike

我创建了以下代码。该宏只需将单元格 A2:G3000 乘以 1,以便格式从文本更改为数字。我编写的宏就是这样做的,但仅限于事件工作表。我在学习时使用了 For Each/Next 循环。

有人可以帮我找出代码中的错误吗?

Sub Format_Change()

Dim sht As Worksheet

For Each sht In Worksheets
Range("M2").Select
ActiveCell.FormulaR1C1 = "=RC[-12]*1"
Range("M2").Select
Selection.AutoFill Destination:=Range("M2:W2"), Type:=xlFillDefault
Range("M2:W2").Select
Selection.AutoFill Destination:=Range("M2:W3000"), Type:=xlFillDefault
Range("M2:W3000").Select
Selection.Copy
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("M2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.ClearContents
Next sht

End Sub

最佳答案

尝试下面的代码,正如 @Vityata 所说,确实没有必要使用这么多 SelectSelection,它会大大减慢代码速度。

尝试下面的代码版本:

Option Explicit

Sub Format_Change()

Dim sht As Worksheet

For Each sht In Worksheets
With sht
.Range("M2").FormulaR1C1 = "=RC[-12]*1"
.Range("M2").AutoFill Destination:=.Range("M2:W2"), Type:=xlFillDefault
.Range("M2:W2").AutoFill Destination:=.Range("M2:W3000"), Type:=xlFillDefault
.Range("M2:W3000").Copy
.Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
.Range(.Range("M2"), .Range("M2").CurrentRegion).ClearContents
End With
Next sht

End Sub

关于vba - For Each/Next 循环不会遍历所有工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43386756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com