2012-07-03 99 views
3

我已经编写了此代码以从分支号码创建电子邮件地址列表。所有地址的格式如下: [email protected]字符串格式丢失

问题是某些分支号码是3位数,所以在这些例如0之前插入零。 681变为0681.我通过使用自定义数字格式0000来做到这一点,但是由于每个电子邮件地址的实际值仍然是000,所以开始的零会丢失。

我可以写更多的代码来复制数字格式,还是我需要写一些东西来先找到所有的三位数字,然后在它们前面插入一个0。

Option Explicit 
Sub Pop_Emails() 
    Dim brno As String 
    Dim i As Integer 
    Dim wks As Worksheet 

    Set wks = Sheets("1A") 
    i = 2 
    Do While i <> 191 
     With wks 
      brno = .Cells(i, 1).Value 
      .Cells(i, 3) = "lp" & brno & "@xxxx.co.uk" 
     End With 
    i = i + 1 
    Debug.Print brno 
    Loop 
End Sub 

回答

7

如果(i, 1)"0001"与自定义格式:

brno = .Cells(i, 1).Value 

1,让简单的格式化值:

brno = .Cells(i, 1).Text 
+1

@AlistairWeir:请不要觉得有责任接受最快的答案。质量好的答案不仅仅是速度快的答案。 – eggyal

+1

这是一个很好的答案,我同意并赞成我自己,但程序需要比制作Excel文档的最终用户更聪明。如果自定义格式意外丢失怎么办?在代码中使用填充或格式设置,这无关紧要。 –

+0

+1是的你是对的:) –

4

您可以在VBA代码中应用的数字格式:

.Cells(i, 3) = "lp" & Format(brno, "0000") & "@xxxx.co.uk" 
+0

很好的回答,完全没有工作。 –

4

Excel中很可能看到它作为一个数字,所以它会自动将其转换为您服务。 Gee谢谢MS。

Anywho ...没什么大不了的,只需用PadLeft()来纠正它。

brno = .Cells(i, 1).Value.PadLeft(4, "0")