ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 英文的大小写转换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-2-18 14:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这里好像只有中文的版本,哪位有现成的英文数字转换宏?比如1000就转换成One thousand,谢谢!

TA的精华主题

TA的得分主题

发表于 2006-2-20 15:58 | 显示全部楼层
他们没这习惯.至于把1000->one thousand,还是不回好吧.

TA的精华主题

TA的得分主题

发表于 2006-2-20 17:13 | 显示全部楼层
<P>Function SpellNumber(ByVal MyNumber)<BR>    <BR>    Dim Dollars, Cents, Temp<BR>    Dim DecimalPlace, Count<BR>    ReDim Place(9) As String<BR>    Application.Volatile True<BR>    Place(2) = " Thousand "<BR>    Place(3) = " Million "<BR>    Place(4) = " Billion "<BR>    Place(5) = " Trillion "<BR>    MyNumber = Trim(Str(MyNumber))<BR>    DecimalPlace = InStr(MyNumber, ".")<BR>    <BR>    If DecimalPlace &gt; 0 Then<BR>        Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) &amp; "00", 2))<BR>        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))<BR>    End If<BR>    Count = 1<BR>    Do While MyNumber &lt;&gt; ""<BR>        Temp = GetHundreds(Right(MyNumber, 3))<BR>        If Temp &lt;&gt; "" Then Dollars = Temp &amp; Place(Count) &amp; Dollars<BR>            If Len(MyNumber) &gt; 3 Then<BR>                MyNumber = Left(MyNumber, Len(MyNumber) - 3)<BR>            Else<BR>                MyNumber = ""<BR>            End If<BR>        Count = Count + 1<BR>        Loop<BR>    Select Case Dollars<BR>        Case ""<BR>            Dollars = "No Dollars"<BR>        Case "One"<BR>            Dollars = "One Dollar"<BR>        Case Else<BR>            Dollars = Dollars &amp; " Dollars"<BR>    End Select<BR>    Select Case Cents<BR>        Case ""<BR>            Cents = " Only"<BR>        Case "One"<BR>            Cents = " and One Cent"<BR>        Case Else<BR>            Cents = " and " &amp; Cents &amp; " Cents"<BR>    End Select<BR>    SpellNumber = Dollars &amp; Cents</P>
<P>End Function</P>
<P>Function GetHundreds(ByVal MyNumber)<BR>    <BR>    Dim Result As String<BR>    If Val(MyNumber) = 0 Then Exit Function<BR>    MyNumber = Right("000" &amp; MyNumber, 3)<BR>    If Mid(MyNumber, 1, 1) &lt;&gt; "0" Then<BR>        Result = GetDigit(Mid(MyNumber, 1, 1)) &amp; " Hundred "<BR>    End If<BR>    If Mid(MyNumber, 2, 1) &lt;&gt; "0" Then<BR>        Result = Result &amp; GetTens(Mid(MyNumber, 2))<BR>    Else<BR>        Result = Result &amp; GetDigit(Mid(MyNumber, 3))<BR>    End If<BR>    GetHundreds = Result<BR>    <BR>End Function</P>
<P>Function GetTens(TensText)<BR>    Dim Result As String<BR>    Result = ""<BR>    If Val(Left(TensText, 1)) = 1 Then<BR>        Select Case Val(TensText)<BR>        Case 10: Result = "Ten"<BR>            Case 11: Result = "Eleven"<BR>            Case 12: Result = "Twelve"<BR>            Case 13: Result = "Thirteen"<BR>            Case 14: Result = "Fourteen"<BR>            Case 15: Result = "Fifteen"<BR>            Case 16: Result = "Sixteen"<BR>            Case 17: Result = "Seventeen"<BR>            Case 18: Result = "Eighteen"<BR>            Case 19: Result = "Nineteen"<BR>            Case Else<BR>            End Select<BR>    Else<BR>        Select Case Val(Left(TensText, 1))<BR>            Case 2: Result = "Twenty "<BR>            Case 3: Result = "Thirty "<BR>            Case 4: Result = "Forty "<BR>            Case 5: Result = "Fifty "<BR>            Case 6: Result = "Sixty "<BR>            Case 7: Result = "Seventy "<BR>            Case 8: Result = "Eighty "<BR>            Case 9: Result = "Ninety "<BR>            Case Else<BR>        End Select<BR>        Result = Result &amp; GetDigit _<BR>            (Right(TensText, 1))<BR>    End If<BR>    GetTens = Result</P>
<P>End Function</P>
<P>Function GetDigit(Digit)<BR>    <BR>    Select Case Val(Digit)<BR>        Case 1: GetDigit = "One"<BR>        Case 2: GetDigit = "Two"<BR>        Case 3: GetDigit = "Three"<BR>        Case 4: GetDigit = "Four"<BR>        Case 5: GetDigit = "Five"<BR>        Case 6: GetDigit = "Six"<BR>        Case 7: GetDigit = "Seven"<BR>        Case 8: GetDigit = "Eight"<BR>        Case 9: GetDigit = "Nine"<BR>        Case Else: GetDigit = ""<BR>    End Select</P>
<P>End Function<BR></P>
<P>拿这个试一下,也是在这里看过的,平常用的不多,没仔细研究过</P>

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-20 21:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<P>谢谢楼上的,这段代码里面似乎没有考虑到百位数和十位数之间加入and的问题,我只看得懂代码,但是不会写,哪位可以再改一下?谢谢!</P>

TA的精华主题

TA的得分主题

发表于 2006-2-20 21:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<P>Function GetHundreds(ByVal MyNumber)<BR>    <BR>    Dim Result As String<BR>    If Val(MyNumber) = 0 Then Exit Function<BR>    MyNumber = Right("000" &amp; MyNumber, 3)<BR>    If Mid(MyNumber, 1, 1) &lt;&gt; "0" Then<BR>        Result = GetDigit(Mid(MyNumber, 1, 1)) &amp; <FONT color=#f70909>" Hundred and "<BR></FONT>    End If<BR>    If Mid(MyNumber, 2, 1) &lt;&gt; "0" Then<BR>        Result = Result &amp; GetTens(Mid(MyNumber, 2))<BR>    Else<BR>        Result = Result &amp; GetDigit(Mid(MyNumber, 3))<BR>    End If<BR>    GetHundreds = Result<BR>    <BR>End Function</P>

<P>红色的那个地方改下试试</P>

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-24 20:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<P>那么如果没有百位数呢?比如1001?</P>
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 09:10 , Processed in 0.030786 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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