我有一些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
答案 0 :(得分:3)
好吧,您要在将新列插入“ G”之前将rng2设置为“ G”,因此您的rng2实际上就是“ I”列。 在第二遍时,将其重置为“ G”。
编辑:尝试使用断点和F8键来了解您的代码在做什么,这很有帮助;)