VBA Excel:单元格值字符串连接不起作用

时间:2014-09-25 09:04:14

标签: excel vba excel-vba

请你帮我解决以下问题。我想做的就是在每个手机号码前面添加“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。我试过其他数字和字符,都格式化为文本等。仍然无法正常工作。

3 个答案:

答案 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