excel - 如何根据单元格值循环?
问题描述
此代码旨在根据单元格值复制和粘贴 x 次。
它会出错并且不会停止循环。
当我踏入它时,它会运行一次并停止。
“O7”是我想复制和粘贴多少次。
Sub WorksheetLoop()
Dim NS As Integer
NS = Sheets("Dashboard").Range("O7").Value
i = 1
Do
Sheets("Dashboard").Select
Sheets("Dashboard").Range("A9").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Archive").Select
lMaxRows = Cells(Rows.Count, "A").End(xlUp).Row
Range("A" & lMaxRows + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
i = i + 1
Loop Until i = NS
MsgBox "loop Complete"
End Sub
解决方案
工作表循环
提示
- 阅读此处了解如何避免使用
Select
. - 如果范围始终相同,请将其置于循环之外(之前)。
- 使用变量。
- 尽可能少地访问每个工作表。
- 请注意我如何使用
i
(i = 0 by default
):仅在复制后增加。在您的解决方案中,不会复制范围的最后一个实例。
编码
Option Explicit
Sub WorksheetLoop()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim i As Long
Dim dst As Worksheet
Set dst = wb.Worksheets("Archive")
Dim cel As Range
Dim src As Worksheet
Set src = wb.Worksheets("Dashboard")
Dim NS As Long
NS = src.Range("O7").Value
Dim rng As Range
Set rng = src.Range("A9", src.Range("A9").End(xlDown))
Set rng = rng.SpecialCells(xlCellTypeVisible)
Application.ScreenUpdating = False
rng.Copy
Do
Set cel = dst.Cells(dst.Rows.Count, "A").End(xlUp).Offset(1)
cel.PasteSpecial xlPasteValues
i = i + 1
Loop Until i = NS
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "loop Complete", vbInformation, "Success"
End Sub
推荐阅读
- python - 在python中按下按钮后如何更新按钮文本?
- excel - 滚动计数
- react-native - CryptoJS 将 Sha256 哈希作为 UTF-8 字符串
- javascript - React 组件中的图像加载在一个页面上而不是另一页上?
- python - Keras - 一类 CNN - 每一步都有两个输入
- python - 进入第一个纪元后,Tensorflow 抛出 ValueError()
- typescript - 通用映射以及将值与键关联
- javascript - Map 以及如何在 JS 中访问对象键?
- javascript - 正则表达式 JS
- reactjs - 编译错误 Unexpected token '<' my first app React