我能夠循環播放數字,但使用文本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
該如何實現?
我能夠循環播放數字,但使用文本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語法。唯一的問題是,在表達:當Cells(i, 1).Value
是不能轉換爲數字
Cells(i, 1).Value + 1
將引發運行時錯誤。這很簡單,你有一個類型不匹配當Cells(i, 1).Value
是一個像「abcd」字符串,你不能將該變體轉換爲一個數字,以便將1
添加到它。
在這種情況下,它不是宏代碼的錯誤,而是數據的錯誤。
爲了解決異構數據你都不可能如果檢查值是操縱它作爲一個數字,這樣之前的數字:
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
@ A.S.H在這裏發現了真正的錯誤,但是還有一些其他的事情需要注意:
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
謝謝CallumDA,我沒有,因爲我通常會嘗試你的代碼當啓動插入>模塊。但是我遇到了一些錯誤:Set。我確實研究了這是否是一個可變問題(通過查看其他帖子),並注意到您進行了更改。我可以證實它也是一個很好的解決方案。代碼很好。 – user7568042
謝謝A.S.H我決定離開去看看與文本有關的錯誤。所以我能夠看到你的方法,但我決定刪除和複製結尾部分,以幫助我實現我所需要的。您的代碼+&「 - 」&Cells(2,2)。值 – user7568042
好點!我希望你不介意我也補充說 - 覺得值得保留我的答案也是值得的(雖然你+1!) – CallumDA
@CallumDA是的,我認爲你的其他言論也很有用。 –