在第二次运行Sub之前,第二个For循环不起作用

时间:2018-08-08 16:50:38

标签: excel vba excel-vba for-loop

我有一些VBA代码,该代码首先检查一列是否存在以及是否需要插入某些列。然后,它从一个单元格中获取值,并将其拆分为新列。

我的问题是,当我运行MACRO时,它只会插入列,然后必须再次运行宏才能插入值。我找不到有关此问题的类似文章,但我想以前已经有人问过它,所以您是否有一个也会很好的链接。

有没有一个原因为什么我的第二个for循环在第一个罚款之后就没有运行?

有没有办法告诉我的代码在一个For循环结束之后继续?

Dim starting_string As String
Dim primary_code As String
Dim primary_group As String
Dim rng1 As Range
Dim rng2 As Range
Dim space_ndex As Integer
Dim working_string As String

Sub controller()
    Set rng1 = Range("G1:G1")
    Set rng2 = Range("G2:G1429")

    For Each cell In rng1
        If cell.Value <> "Code" Then
            Range("G:H").EntireColumn.Insert
            Cells(1, "G").NumberFormat = "@"
            Cells(1, "H").NumberFormat = "@"
            Cells(1, "G").Value = "Code"
            Cells(1, "H").Value = "Primary Group"
        End If
    Next cell

    For Each cellg In rng2
        working_string = cellg.Offset(0, -1).Value
        If Trim(working_string) <> "" Then
            space_ndex = InStr(cellg.Offset(, -1).Value, " ")
            cellg.Offset(0, 0).NumberFormat = "@"
            cellg.Offset(0, 1).NumberFormat = "@"
            cellg.Offset(0, 0).Value = Left(working_string, space_ndex)
            cellg.Offset(0, 1).Value = Mid(working_string, space_ndex, 100)
        End If
    Next cellg

End Sub

1 个答案:

答案 0 :(得分:3)

好吧,您要在将新列插入“ G”之前将rng2设置为“ G”,因此您的rng2实际上就是“ I”列。 在第二遍时,将其重置为“ G”。

编辑:尝试使用断点和F8键来了解您的代码在做什么,这很有帮助;)