将数字添加到文本时出错

我可以循环播放数字,但是文字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在这里发现了真正的错误,但还有一些其他的事情需要注意:

  1. 当像这样循环访问列/行时,通常最好使用For Each循环。
  2. 使用它自己的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