Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2710|回复: 10

[已解决]请帮忙修正代码错误之处

[复制链接]
发表于 2016-12-1 12:03 | 显示全部楼层 |阅读模式
本帖最后由 huchuanxing 于 2016-12-2 12:25 编辑

以下是本人写的数字转换为文本的VBA代码,请帮忙看看代码错在何处:
Sub 数字转文本字()
    Dim rng As Range, address As String
    If TypeName(Selection) = "Range" Then address = Selection.address Else address = ""
    '弹出一个对话框, 让用户选择区域, 默认显示变量address的值。然后将该用户选择区域赋予变量rng
    Set rng = Application.InputBox("请选择待转换的区域", "转换区域", address, , , , , 8)
    If rng Is Nothing Then Exit Sub

    For Each rng In Selection
        If rng.Value <> "" Then
            rng = CStr(rng.Value)
        End If
    Next
End Sub





最佳答案
2016-12-2 11:52
  1. Sub 数字转文本字()
  2.     Dim rng As Range
  3.     Set rng = Application.InputBox("请选择待转换的区域", "转换区域", Address, , , , , 8)
  4.     If rng Is Nothing Then Exit Sub
  5.     For Each rng1 In rng
  6.     rng1.Value = "'" & rng1.Value
  7.     Next
  8. End Sub
复制代码
发表于 2016-12-1 12:55 | 显示全部楼层
数字转文本字是什么意思?1转为一,还是1转为壹,还是1转为文本格式存储的1?
回复

使用道具 举报

发表于 2016-12-1 13:31 | 显示全部楼层
1.语句没错。
2.最好别用内定属性名称“Address"作变量
3.由于单元格未设置为文本格式,所以单元格内容依然会变回数值格式,所以建议添加一句语句:
Sub 数字转文本字()
    ........
    If rng Is Nothing Then Exit Sub
    Selection.NumberFormatLocal = "@"
    For Each rng In Selection
      ........
End Sub

回复

使用道具 举报

 楼主| 发表于 2016-12-1 15:41 | 显示全部楼层
望帝春心 发表于 2016-12-1 12:55
数字转文本字是什么意思?1转为一,还是1转为壹,还是1转为文本格式存储的1?

是指将数值型数字转化为文本型的数字,转化后文本型数字形式仍然是阿拉伯数字  ,123之类

回复

使用道具 举报

发表于 2016-12-1 15:48 | 显示全部楼层
Rng.Value = "'" & Rng.Value
回复

使用道具 举报

发表于 2016-12-1 15:50 | 显示全部楼层
huchuanxing 发表于 2016-12-1 15:41
是指将数值型数字转化为文本型的数字,转化后文本型数字形式仍然是阿拉伯数字  ,123之类

不用那么复杂
  1. Sub 数字转文本字()
  2.     Dim rng As Range
  3.     Set rng = Application.InputBox("请选择待转换的区域", "转换区域", address, , , , , 8)
  4.     If rng Is Nothing Then Exit Sub
  5.     rng.NumberFormat = "@"
  6.     rng = rng.Value
  7. End Sub
复制代码


回复

使用道具 举报

 楼主| 发表于 2016-12-2 11:17 | 显示全部楼层
zjdh 发表于 2016-12-1 13:31
1.语句没错。
2.最好别用内定属性名称“Address"作变量
3.由于单元格未设置为文本格式,所以单元格内容依 ...

谢谢。
回复

使用道具 举报

 楼主| 发表于 2016-12-2 11:24 | 显示全部楼层

我试了此代码,虽然表面看上去是转为文本了,但实际仍为数值型的数字,因为你代码转换后仍可以求和。
QQ图片20161202122301.png
回复

使用道具 举报

 楼主| 发表于 2016-12-2 11:25 | 显示全部楼层
上清宫主 发表于 2016-12-1 15:48
Rng.Value = "'" & Rng.Value

谢谢。

回复

使用道具 举报

发表于 2016-12-2 11:27 | 显示全部楼层
huchuanxing 发表于 2016-12-2 11:24
我试了此代码,虽然表面看上去是转为文本了,但实际仍为数值型的数字,因为你代码转换后仍可以求和。

那就连接个单引号了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 20:52 , Processed in 0.506868 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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