请你帮我解决以下问题。我想做的就是在每个手机号码前面添加“0”来“清理”一个列表。这是我的代码:
Sub ListCleaner_CleanCellPhoneNumbers()
Dim selectedRange As Range
Set selectedRange = getSelectedRange()
Dim i As Integer
Dim max As Integer
i = 1
max = selectedRange.Rows.Count
While i <= max
Dim cell As Range
Set cell = selectedRange.Cells(i)
' Get row number
Dim rowNumber As Integer
rowNumber = cell.Row
' Skip header
If rowNumber > 1 Then
If Mid(cell.Value, 1, 1) <> "0" Then
cell.Value = "0" & cell.Value
End If
End If
i = i + 1
Wend
我的问题在于'cell.Value =“0”&amp; cell.Value”。它根本不会在前面添加“0”。如果我执行以下'cell.Value =“0”&amp; “你好世界”'它运作得很好。我还检查了cell.Value是否正确访问等。
任何建议将不胜感激。谢谢。
更新 我不认为问题在于我在前面使用0。我试过其他数字和字符,都格式化为文本等。仍然无法正常工作。
答案 0 :(得分:0)
如果单元格是数字类型,它将删除开头的所有零。 如果单元格是文本类型,它应该可以工作。
答案 1 :(得分:0)
我已设法通过使用建议答案的组合来解决此问题。感谢@ vba4all和@dared的回复。 1
这是我的解决方案:
cell.Value = "'0" & LTrim(cell.text)
我必须在0之前使用',并使用cell.text而不是值。 LTrim用于消除前导空格。
答案 2 :(得分:0)
如果电话号码始终具有相同的长度(例如9个号码),则可以将NumberFormat更改为以下代码中的状态。它只会更改数字,因此您的标题是安全的:)
Sub ListCleaner_CleanCellPhoneNumbers()
Dim selectedRange As Range
Set selectedRange = getSelectedRange()
selectedRange.NumberFormat = "000000000"
End Sub