首页 > 解决方案 > 有没有办法在循环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

标签: excelvba

解决方案


我不确定这是否有效,但我强烈反对它: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

推荐阅读