首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA -复制时丢失所有前导零

VBA -复制时丢失所有前导零
EN

Stack Overflow用户
提问于 2016-06-14 16:07:22
回答 1查看 1.3K关注 0票数 0

我的新VBA代码有点问题。

下面是所做的事情:我有一个excel,其中有两个工作表(+1包含一个数据库)。表格1以下列格式载列G中的电话号码: 050-7080-6030 / 301-123-456 / 06-1234-4567等。我需要将此复制到第2页,同时删除"-“(由于各种原因,我创建了一个表-see -下面的代码)。我只是使用记录复制部分来粘贴它,因为值-which工作得很好-但是,在第2页上,运行第二个宏后,我丢失了所有的前导零。我尝试过将单元格格式作为整个工作表的文本(两者都是),甚至是NumberFormat =.之类的vba代码。然而,似乎什么都起不到作用。知道怎么解决这个问题吗?提前感谢!以下是密码:

代码语言:javascript
复制
Sub copy()

'copy

Rows("4:6").Select
Selection.copy
Sheets("Sheet2").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub

Sub Multi_FindReplace()

Dim wks As Worksheet
Dim fndList As Integer
Dim rplcList As Integer
Dim tbl As ListObject
Dim myArray As Variant

Set wks = Sheets("Sheet2")

Set tbl = Worksheets("DBs").ListObjects("Phone")


Set TempArray = tbl.DataBodyRange
myArray = Application.Transpose(TempArray)


fndList = 1
rplcList = 2

With wks

For x = LBound(myArray, 1) To UBound(myArray, 2)

      .Range("G3:I100").Replace What:=myArray(fndList, x), Replacement:=myArray(rplcList, x), _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, _
        SearchFormat:=False, ReplaceFormat:=False


Next x

End With

End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-14 17:10:04

此问题是由Excel处理替换的方式引起的。它是将文本字符串重新格式化为一个数字,这当然会降低前导零。

使用“替换”命令实际上保留了原始格式。

代码语言:javascript
复制
On Error GoTo Done:
Do
Range("G3:I100").Select
    Selection.Find(What:="-", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        ActiveCell = Replace(ActiveCell.Value, "-", "")
Loop
Done:

注意,这在技术上是一个无限循环,因为没有退出循环的条件。此处的出口实际上是在指定范围内找不到"-“所产生的错误。

如果你有一个有限的区域去搜索,我发现这是一个简单的方法。如果是可变区域,则用在循环之前定义的数组替换选择行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37817101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档