将数字添加到文本时出错
我可以循环播放数字,但是文字Do While不会循环播放。
Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" Cells(i, 2).Value = Cells(i, 1).Value + 1 i = i + 1 Loop
我如何实现这个?
你可以像这样循环,而且在VBA语法方面你没有任何错误。 唯一的问题是expression式:
Cells(i, 1).Value + 1
Cells(i, 1).Value
不能转换为数字时会引发运行时错误 。 这很简单,当Cells(i, 1).Value
是一个类似“abcd”的string时,您的types不匹配 ,则无法将该变体转换为数字以便将其添加1
。
在这种情况下,不是macros代码的错误,而是数据的错误。
要处理异构数据,您可以在将其作为数字操作之前检查其值是否为数字,如下所示:
Do While Cells(i, 1).Value <> "" If IsNumeric(Cells(i, 1).value) then Cells(i, 2).Value = Cells(i, 1).Value + 1 ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ i = i + 1 Loop
@ASH在这里发现了真正的错误,但还有一些其他的事情需要注意:
- 当像这样循环访问列/行时,通常最好使用
For Each
循环。 - 使用它自己的
Cells
可以隐式引用ActiveWorksheet
。 最好明确引用你指的是哪个单元格,例如ThisWorkbook.Worksheets("Sheet1").Cells
尝试这个:
Sub Test() Dim rng As Range, r As Range Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:A100") 'range to loop through For Each r In rng If r.Value <> vbNullString and IsNumeric(r.value) Then r.Offset(0, 1).Value = r.Value + 1 End If Next r End Sub