ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2075|回复: 6

[求助] vab复制粘贴后变为科学计数格式,如何设置代码不变格式?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-10 11:45 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
系统里导出的原始表格,原始表格部分单元格可能有错误的原因,左上角有绿色三角符号。现在合并多个此类表格,代码如下。结果复制后的部分结果就成科学计数的格式了。请问如何设置代码,完整展示结果?
Sub 文件合并()
Dim Num As Long     'dim为定义参数
Dim insert_row As Long
Dim MyPath As String
Dim MyName As String
Dim Wb As Workbook   'dim被合并文件名

Application.DisplayAlerts = False

insert_row = 1
MyPath = ThisWorkbook.Path
MyName = Dir(MyPath & "\*.xls")
Num = 0
[A1].CurrentRegion.ClearContents
Do While MyName <> ""
    If MyName <> ActiveWorkbook.Name Then
       Set Wb = Workbooks.Open(MyPath & "/" & MyName)
       Num = Num + 1
       With Sheets("sheet1").Activate

          If Num = 1 Then
            If Range("A" & (Cells.SpecialCells(xlCellTypeLastCell).Row - 1)).Value = "合计行" Then
            Range("A3", "BV" & (Cells.SpecialCells(xlCellTypeLastCell).Row - 2)).Select
            Else
            Range("A3", "BV" & (Cells.SpecialCells(xlCellTypeLastCell).Row - 1)).Select
            End If
          Else
           If Range("A" & (Cells.SpecialCells(xlCellTypeLastCell).Row - 1)).Value = "合计行" Then
            Range("A4", "BV" & (Cells.SpecialCells(xlCellTypeLastCell).Row - 2)).Select
            Else
            Range("A4", "BV" & (Cells.SpecialCells(xlCellTypeLastCell).Row - 1)).Select
            End If
          End If
       End With

      Selection.Copy
      ActiveWindow.Close
      Range("A" & insert_row).Select
      Selection.PasteSpecial Paste:=xlPasteAll
      insert_row = Range("A" & Rows.Count).End(xlUp).Row + 1   'End(xlUp).Row指数据区域最后一行行号


    End If
    MyName = Dir

Loop
End Sub

示例.zip

1.97 MB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-9-10 13:33 | 显示全部楼层
强迫症吗?如果不是强迫症患者可以实现设置单元格格式。
把A列设置成文本格式。 [a:a].NumberFormatLocal = "@"

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-10 14:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
alstar 发表于 2018-9-10 13:33
强迫症吗?如果不是强迫症患者可以实现设置单元格格式。
把A列设置成文本格式。 [a:a].NumberFormatLocal  ...

试过了 不顶用。。

TA的精华主题

TA的得分主题

发表于 2018-9-10 14:29 | 显示全部楼层
      Selection.Copy
      ActiveWindow.Close
      Range("A" & insert_row).Select
      Selection.PasteSpecial Paste:=xlPasteValue
      insert_row = Range("A" & Rows.Count).End(xlUp).Row + 1   'End(xlUp).Row指数据区域最后一行行号

你用xlPasteAll的方法copy会把原来的格式也跟着复制进来。在你没复制前加上[a:a].NumberFormatLocal = "@",之后再用xlpastevalue的 方法。我测试了。没问题

TA的精华主题

TA的得分主题

发表于 2018-9-10 14:31 | 显示全部楼层
为啥非得要copy呢。。打开文件后把想要的数据装入数组在关闭工作簿,那么处理数据比用copy方法运行速度快的很多吧。而且还方便对数据加以处理。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-10 15:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
alstar 发表于 2018-9-10 14:31
为啥非得要copy呢。。打开文件后把想要的数据装入数组在关闭工作簿,那么处理数据比用copy方法运行速度快的 ...

现在可以了,谢谢你!我之前是在原始数据设置的文本格式,错误没调过来,因此不顶用。后面尝试下用原始数据忽略错误的代码看行不行。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-10 15:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
alstar 发表于 2018-9-10 14:31
为啥非得要copy呢。。打开文件后把想要的数据装入数组在关闭工作簿,那么处理数据比用copy方法运行速度快的 ...

新手学习,代码也是网上找的,惭愧。。。多谢你提供思路,下来再学习下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-14 03:26 , Processed in 0.023535 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表