Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 字符串格式丢失_Vba_Excel_String Formatting - Fatal编程技术网

Vba 字符串格式丢失

Vba 字符串格式丢失,vba,excel,string-formatting,Vba,Excel,String Formatting,我写这段代码是为了根据分行号码创建电子邮件地址列表。所有地址的格式如下: lp0000@xxx.co.uk 问题是一些分支编号是3位数字,因此在这些编号之前插入一个零,例如681变为0681。我通过使用自定义数字格式0000实现了这一点,但由于创建电子邮件地址时每个数字的实际值仍然是000,因此起始零丢失 我可以写更多的代码来复制数字格式吗?或者我需要写一些东西来首先找到所有三位数字,然后在它们前面插入一个0 Option Explicit Sub Pop_Emails() Dim br

我写这段代码是为了根据分行号码创建电子邮件地址列表。所有地址的格式如下:
lp0000@xxx.co.uk

问题是一些分支编号是3位数字,因此在这些编号之前插入一个零,例如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
选项显式
子Pop_电子邮件()
暗brno作为字符串
作为整数的Dim i
将工作作为工作表
设置工作=工作表(“1A”)
i=2
我来的时候做
有工作
brno=.Cells(i,1).Value
.Cells(i,3)=“lp”和brno&“@xxxx.co.uk”
以
i=i+1
调试。打印brno
环
端接头

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

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

Excel可能将其视为一个数字,因此它会自动为您转换它。哎呀,谢谢你

不管是谁。。。没什么大不了的,只要用
PadLeft()
来纠正它就行了

brno = .Cells(i, 1).Value.PadLeft(4, "0")
如果
(i,1)
是具有自定义格式的
“0001”

 brno = .Cells(i, 1).Value
将为
1
,只需获取格式化值:

 brno = .Cells(i, 1).Text

回答得好,工作做得很完美。@AlistairWeir:请不要觉得有义务接受最快的答案。因此,高质量的答案比快速的答案更能带来好处。我同意这是一个好答案,并对自己进行了投票,但该程序需要比制作Excel文档的最终用户更聪明。如果自定义格式意外丢失怎么办??对于代码中的填充或格式化,这并不重要。