代码之家  ›  专栏  ›  技术社区  ›  Interactive

如果相邻单元格为空,则VBA完成循环

  •  0
  • Interactive  · 技术社区  · 1 年前

    我正在创建一个循环,通过一张单独的工作表上的一列。
    对于每个包含内容的单元格,它都会创建一个新的工作表。

    在列中有一个空单元格来创建分隔。
    我无法更改,因为这是出口。

    循环看到空单元格并停止。
    我需要让循环知道,如果它遇到两个相邻的单元格,它应该停止。

    这是一个循环:

    Option Explicit
    Sub AddSheets()
    Dim wks As Worksheet
    Dim wksNew As Worksheet
    Dim rngCell As Range
    
    Set wks = Sheets("Manual")
    Set rngCell = wks.Range("B5")
    
    While Not IsEmpty(rngCell)
        Set wksNew = ActiveWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count))
        wksNew.Name = rngCell.Value
    
        'do stuff with wksNew
    
        Set rngCell = rngCell.Offset(1)
    Wend
    
    End Sub
    

    专栏非常简单:
    |页眉| |--------| |第一| |第二| |第三| || |第四| |第五| |第六| || ||

    1 回复  |  直到 1 年前
        1
  •  1
  •   JohnM    1 年前

    您可以将循环更改为 Do 。。。 Loop 然后使用计数器(此处 countOfEmpty )要记录找到空单元格的行数。。。当达到2时,退出循环

    Option Explicit
    Sub AddSheets()
    Dim wks As Worksheet
    Dim wksNew As Worksheet
    Dim rngCell As Range
    Dim countOfEmpty As Long
    
    Set wks = Sheets("Manual")
    Set rngCell = wks.Range("B5")
    
    Do While True
        If IsEmpty(rngCell) Then
            countOfEmpty = countOfEmpty + 1
            If countOfEmpty = 2 Then Exit Do
        Else
            countOfEmpty = 0
            Set wksNew = ActiveWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count))
            wksNew.Name = rngCell.Value
    
            'do stuff with wksNew
    
        End If
        Set rngCell = rngCell.Offset(1)
    Loop
    
    End Sub