问题描述
我对一系列列进行了简单的迭代,以将“-”字符串替换为空。 但是,它只进行第一次迭代,然后退出循环。 代码如下:
For i = 2 To ultimo
StrEx = Workbooks(custodio).Sheets(1).Range("A" & i).Value
StrEx = Replace(StrEx,"-","""")
Workbooks(custodio).Sheets(1).Range("A" & i).Value = StrEx
Next i
其中 ultimo
是最后一行,custodio
是工作簿的名称。
i
值在循环内的第一行执行后发生变化,如果我将鼠标悬停在它上面,它会抛出一个值 454311
有什么想法吗?
解决方法
- 无需在每次迭代时检索工作簿和工作表。在进入循环之前更快地将工作表保存为变量
-
i
需要声明为Long
(一个工作表可以有 1048576 行,而Integer
是不够的) - 无需每次都连接
"A"
。您可以简单地使用第 1 列 - 您可以保存您读/写的单元格,这样您就不必两次检索它。更好的是,您可以使用
With
构造
试试这个解决上述问题的代码:
Dim sht As Worksheet
Dim i As Long
Set sht = Workbooks(custodio).Sheets(1)
For i = 2 To ultimo
With sht.Cells(i,1) 'Instead of sht.Range("A" & i)
.Value2 = Replace(.Value2,"-","""")
End With
Next i
我不知道为什么你会像你的问题一样改变 i
,但我希望看到你测试这段代码,看看它是否有效