Excel 尝试使用动态范围删除字符串的一部分,但循环失败';不要停止跑步
正如标题所示,我有一个动态范围,其中每个单元包含“XXXX-XXXXX-#######”,我的代码(atm)删除了具有动态范围的“XXXX-XXXXX”部分,但在到达最后一个单元后不会停止运行Excel 尝试使用动态范围删除字符串的一部分,但循环失败';不要停止跑步,excel,vba,loops,dynamic,Excel,Vba,Loops,Dynamic,正如标题所示,我有一个动态范围,其中每个单元包含“XXXX-XXXXX-#######”,我的代码(atm)删除了具有动态范围的“XXXX-XXXXX”部分,但在到达最后一个单元后不会停止运行 Sub removestring() 'To Find The Last Row Dim LRow As Double LastRow = Cells(Rows.Count, "A").End(xlUp).Row Dim x As Variant x = Last
Sub removestring()
'To Find The Last Row
Dim LRow As Double
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Dim x As Variant
x = LastRow
'To Remove "XXXX-XXXXXX-"
row_number = 1
Do
DoEvents
row_number = row_number + 1
the_description = Sheet1.Range("E" & row_number)
the_description = Replace(the_description, "XXXX-XXXXXX-", " ")
Sheet1.Range("E" & row_number) = the_description
Loop Until row_number = LastRow
'Can't Get Loop To Stop
End Sub
首先,最好声明所有变量 我将Do循环更改为for循环。这两种方法都有效,但正如您所知,循环的末尾(LastRow),我认为在这种情况下,for循环是更好的选择 确保在右列中查找最后一行
Sub removestring()
Dim LastRow As Integer
Dim row_number As Integer
Dim wks As Worksheet
Dim the_description As String
Set wks = Sheets(1) 'Refer to sheet number
'Set wks=ActiveSheet 'Refer to active sheet
'Set wks=Sheets("Name of the sheet") 'Refer to named sheet
LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row
'Are you sure you are searching the last row in column A?
'Below you are referring to column E.
'To Remove "XXXX-XXXXXX-"
For row_number = 1 To LastRow
DoEvents
the_description = wks.Range("E" & row_number)
the_description = Replace(the_description, "XXXX-XXXXXX-", " ")
wks.Range("E" & row_number) = the_description
Next row_number
End Sub
抛出一个中断,在进入循环之前检查LastRow的值。如果LastRow为0或更小,它将永远不会等于row_number。我对VBA非常陌生-您能否对如何检查LastRow的值进行一点扩展?@Joseph我现在知道了-谢谢!)在LastRow代码中的文本上添加鼠标。它应该告诉你这个值是多少。我猜A列中没有数据,因此最后一行是0。将行更改为
LastRow=Cells(Rows.Count,“E”).End(xlUp)。Row
可能会起作用。。但请使用断点检查您的值:)您将LRow声明为Double
,但之后您将使用LastRow
。确保正确声明所有变量。行可以声明为Ìnteger
,因为它没有十进制数字。