2014-09-25 152 views
0

请帮助我解决以下问题。我想要做的就是在每个手机号码前添加“0”来清除列表。这是我的代码:VBA Excel:单元格值字符串连接不起作用

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” & cell.Value'。它根本不会在前面添加“0”。如果我做了以下'cell.Value =“0”&“Hello world”,它工作得很好。我也检查和cell.Value正确访问等。

任何意见,将不胜感激。谢谢。

更新: 我不认为问题在于我在前面使用0。我尝试了其他数字以及字符,所有格式化为文字等。仍然无法正常工作。

回答

0

我已经设法通过使用建议的答案的组合来解决此问题。感谢@ vba4all和@dared的回复。 +1

这里是我的解决办法:

cell.Value = "'0" & LTrim(cell.text) 

我有一个'前的0使用,并使用cell.text,而不是价值。 LTrim用于消除领先空间。

0

如果单元格是数字类型,它将删除开头的所有零。 如果单元格是typeof文本,它应该工作。

+0

Thanx @dared这没有奏效。抱歉 – 2014-09-25 10:43:57

0

如果电话号码始终具有相同的长度(例如9个数字),则可以将NumberFormat更改为以下代码中的状态。它只会改变数字,所以你的标头是安全的:)

Sub ListCleaner_CleanCellPhoneNumbers() 

Dim selectedRange As Range 
Set selectedRange = getSelectedRange() 

     selectedRange.NumberFormat = "000000000" 

End Sub 
相关问题