【问题标题】:VBA - Losing all leading zeroes when copyingVBA - 复制时丢失所有前导零
【发布时间】:2016-06-14 16:07:22
【问题描述】:

我的新 VBA 代码有点小问题..

这是发生了什么: 我有一个 excel,其中有两张表(+1 包含一个数据库)。表 1 在 G 列中包含以下格式的电话号码:050-7080-6030 / 301-123-456 / 06-1234-4567 等。我需要将其复制到表 2,同时删除“-”(我通过创建一个表来实现这一点 - 参见下面的代码 - 出于各种原因)。我只是使用复制部分的记录将其粘贴为一个值 - 这工作得很好 - 但是,在工作表 2 上,我在运行第二个宏后丢失了所有前导零。我尝试将单元格格式作为整个工作表(两者)的文本,甚至像 NumberFormat = ... 这样的 vba 代码,但似乎没有任何效果。知道如何解决这个问题吗?提前致谢! 以下是代码:

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

【问题讨论】:

  • 如果在复制之前将 Sheet2 上的单元格格式化为文本,应该可以正常工作。
  • 我也是这么想的,但是,它不起作用..我尝试将它应用于整个工作表,只有列,只有单元格..每次都是相同的结果
  • 您是否尝试过使用撇号(单引号)作为前缀的终极解决方法?
  • 是复制后出现问题,还是替换后出现问题?
  • 复制功能似乎工作正常。复制后零仍然存在,但是,当我运行替换时,它们会自动消失。

标签: vba copy format cell leading-zero


【解决方案1】:

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

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

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:

请注意,这在技术上是一个无限循环,因为没有退出循环的条件。这里的退出其实就是在指定范围内没有找到“-”产生的错误。

如果您要搜索的区域有限,我发现这是一种简单的方法。如果是可变区域,则将选择行替换为循环前定义的数组。

【讨论】:

  • 谢谢!这似乎确实有效!寿,对我来说,这只是部分,因为在我的情况下,有中文/日文双字节字符。不过,我似乎可以自己解决另一半。如果没有,我可能会再发一次。很抱歉给您带来不便,感谢您的快速回复!!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2010-10-04
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
相关资源
最近更新 更多