excel - 有没有办法在循环VBA内的if语句中将for循环中的变量重置回1
问题描述
我试图让它工作,以便每次在 for 循环内的 if 语句中满足条件时,用于 for 循环的变量 sheet_number 回到 1,但我不确定是否会发生这种情况,因为程序没有不要像我想要的那样填写所有表格。下面是我的代码。
Sub Luka_Koper()
Dim i As Integer, j As Integer, imena As Integer, sheet_number As Integer, n As Integer, x As Integer, y As Integer
n = 8
For sheet_number = 1 To Application.Sheets.Count
If Sheets("ZBIR UR").Cells(n, 2).Value = Sheets(sheet_number).Cells(1, 1).Value Then
i = 3
j = 4
x = n + 1
y = n + 2
For j = 4 To 32
Worksheets("ZBIR UR").Cells(n, i).Copy
Worksheets(sheet_number).Cells(j, 2).PasteSpecial Paste:=xlPasteFormulas
Worksheets("ZBIR UR").Cells(x, i).Copy
Worksheets(sheet_number).Cells(j, 3).PasteSpecial Paste:=xlPasteFormulas
Worksheets("ZBIR UR").Cells(y, i).Copy
Worksheets(sheet_number).Cells(j, 4).PasteSpecial Paste:=xlPasteFormulas
i = i + 1
Next j
sheet_number = 1
n = n + 3
Else
If n > 500 Then
Exit Sub
End If
End If
Next sheet_number
End Sub
解决方案
我不确定这是否有效,但我强烈反对它:for
-loop 被称为一种计数器:你知道它从哪里开始,它会一个接一个地(或一步一步地)进行,直到最后一个值是到达。
如果您想在循环本身内更改该值,我会建议使用while
-loop,例如:
sheet_number = 1
do while sheet_number <= Application.Sheets.Count
...
if <condition>
then sheet_number = 1 ' IMPORTANT: THIS MIGHT CAUSE AN INFINITE LOOP!!!
end if
...
sheet_number = sheet_number + 1
loop
推荐阅读
- javascript - 我被困在 ngx-leaflet 上创建 Leaflet 按钮
- c - 如何使用 mergesort 对具有相同姓氏的名称进行排序?
- powershell - Powershell - 仅获取具有值的属性
- google-apps-script - Gsheet 中的动态范围 - 在分析之前准备 GForm 数据
- go - 流服务器错误:rpc 错误:代码 = 不可用 desc = 传输正在关闭“
- android - 谷歌助手未在 Android 应用上采用新的 URI
- rest - 访问谷歌云部署的 REST API 的 URL
- css - 如何修复 Internet Explorer 中的字体错误(不使用字体)[BLAZOR]
- sql - Angular 上的 Codemirror for SQL 提示有效,但出现 Typescript 输入错误
- pagespeed-insights - Page Speed 仅第一次显示高分