Office中国论坛/Access中国论坛

标题: 求助!复杂的数字转中文大写金额问题 [打印本页]

作者: xhjczx    时间: 2005-3-30 08:27
标题: 求助!复杂的数字转中文大写金额问题
  我想打印已印刷好的工资表,为方便调整打印大写金额的位置,我用七个VB的“文本框”显示从分到万的大写金额,现设想:能否在Excel里一个单元格小写金额分别反映到这七个“文本框”里显示大写金额呢?[如 05461.25=(零)(伍)(肆)(陆)(壹)(贰)(伍)]

各位高手谁能帮帮忙!谢谢!



[attach]9679[/attach]



[此贴子已经被作者于2005-3-31 10:56:53编辑过]


作者: sgch1982    时间: 2005-3-30 16:27
这个很简单:)
作者: pxbld    时间: 2005-3-30 19:10
标题: 不难
对数字的单元格进行取字符操作即可,多重if 语句
作者: xhjczx    时间: 2005-3-31 20:15
喂!楼上的怎样“简单”;怎样“不难”???来点实际的。
作者: 老鬼    时间: 2005-3-31 20:42
[attach]9680[/attach]


作者: xhjczx    时间: 2005-3-31 23:43
谢谢老鬼兄!

但这方案不能解决问题,第一,因为我的表格是已印刷好的,“万”“仟”“佰”。。。的字体已存在;第二,用Excel的单元格是很难调移动对齐印刷纸。所以最理想还是用VBA的“文本框”,这样可随意移动“万”“仟”“佰”。。。

[attach]9685[/attach]


作者: 情比金坚    时间: 2005-4-1 05:59
文本框之方案



[attach]9692[/attach]



[此贴子已经被作者于2005-3-31 22:00:32编辑过]


作者: xhjczx    时间: 2005-4-1 06:59
以下是引用情比金坚在2005-3-31 21:59:00的发言:

文本框之方案





[attach]9692[/attach]



你给我的文件是什么格式?我打不开
作者: 老鬼    时间: 2005-4-4 01:56
情小妹的文件的确打不开。下面是我用函数做的:[attach]9709[/attach]

作者: sgch1982    时间: 2005-4-7 02:43
[attach]9779[/attach]
唉,EXCEL里有没有控件数组啊?

下班搞了一下,解决了:)

我搞了好久,还有这样的引用在VB中可以,但EXCEL里不行



dim t as textbox

set t = textbox1

靠!!!
作者: 老鬼    时间: 2005-4-7 04:25
楼上的文件照样出错,不知怎么回事。

Dim t As TextBox
Set t = textbox1应该可行的,关键看你的TEXTBOX1是面向什么对象的,有可能面向窗体,也可能面向工作表。
作者: 情比金坚    时间: 2005-4-7 05:19
打不开?我下了几就次都可以,我的方案如下:

万:=TEXT(TRUNC(MOD($J$14/10000,10)),"[dbnum2]")

千:=TEXT(TRUNC(MOD($J$14/1000,10)),"[dbnum2]")

百:=TEXT(TRUNC(MOD($J$14/100,10)),"[dbnum2]")

十:=TEXT(TRUNC(MOD($J$14/10,10)),"[dbnum2]")

元:=TEXT(TRUNC(MOD($J$14,10)),"[dbnum2]")

角:=TEXT(TRUNC(MOD($J$14/0.1,10)),"[dbnum2]")

分:=TEXT(TRUNC(MOD($J$14/0.01,10)),"[dbnum2]")

最后绘图---文本框引用一下。
作者: 老鬼    时间: 2005-4-7 06:46
奇怪了,难道又是论坛的BUG?情小妹的方法不错~~~~~
作者: sgch1982    时间: 2005-4-7 16:31
怎么打不开,我打开了啊??奇怪了??
作者: sgch1982    时间: 2005-4-7 16:32
我贴代码吧:



Private Sub CommandButton1_Click()

Dim str(1 To 7) As String



Dim sum As Double
Dim sum1 As Long
Dim a As Long

Dim d As Integer
Dim i As Integer
a = 10
sum = Sheet1.Cells(14, 10)
sum1 = sum * 100
i = 7
Do While sum1 <> 0
   d = sum1 Mod a
   sum1 = sum1 \ a
   
   str(i) = GetDX(d)
   i = i - 1
   
   

Loop
Dim k As Integer
For k = i To 1 Step -1

  str(i) = GetDX(0)
  

Next

TextBox1.Text = str(1)
TextBox2.Text = str(2)
TextBox3.Text = str(3)
TextBox4.Text = str(4)
TextBox5.Text = str(5)
TextBox6.Text = str(6)
TextBox7.Text = str(7)



End Sub

Public Function GetDX(d As Integer) As String
Dim str As String
Select Case d
'壹、贰、叁、肆、伍、陆、柒、捌、玖、拾
Case 0
   str = "零"
Case 1
  str = "壹"
Case 2
  str = "贰"
Case 3
  str = "叁"
Case 4
  str = "肆"
Case 5
  str = "伍"
Case 6
  str = "陆"
Case 7
  str = "柒"
Case 8
  str = "捌"
Case 9
  str = "玖"
End Select

GetDX = str

  
   
End Function

Private Sub CommandButton2_Click()

End Sub

Private Sub TextBox1_Change()

End Sub

作者: 老鬼    时间: 2005-4-8 09:50
VBA自然方便一点的,楼上的思路和情小妹的是一样的~~~~~
作者: xhjczx    时间: 2005-4-11 08:26
实际如何才能实现您们所说的结果呢?烦请大哥一步步教小弟吧!
作者: sgch1982    时间: 2005-4-11 16:52
[attach]9881[/attach]





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3