作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了以下代码。该宏只需将单元格 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 所说,确实没有必要使用这么多 Select
和 Selection
,它会大大减慢代码速度。
尝试下面的代码版本:
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/
我是一名优秀的程序员,十分优秀!