1、要求做成.dll文件,能在其他程序语言里调用。
2、最好有代码和详细注释。
2、最好有代码和详细注释。
解决方案 »
- 2009胡润女富豪榜出炉 张茵以330亿重登榜首
- 多条件查询报错 对象 Refresh 的方法 IAdodc 失败
- 这样的启动效果如何实现?
- 。。。。。。。。。。。。。。。。。。。。。。。。。。
- l = GetPixel(dd, p.x, p.y) 得到的颜色数值,如何转换成RGB呢?
- 怎么样才能使编译好的软件,在没有装vb的机子上运行呀?
- 没人会吗?关于listbox和datagrid的问题!
- 各位大侠谁有华容道的源代码?急急!
- 90分,可以加分呀。关于窗口的问题。
- 请问hook技术是什么,能详细一点吗
- 公共模块里面定义的全局变量,传给 sql 语句查询时 出现问题,该怎么办? 谢谢
- mschart中ColumnLabel属性为什么没用。在线等待?
Dim I, K As Integer
Dim NC, nd, ka, chrNum, strZheng As String
Dim c1, c2, c3 As String
Dim K1 As Integer
Dim Zheng As String
Dim Xiao As String
NC = Trim(Format(txtJE, "##0.00"))
c1 = "仟佰拾万仟佰拾亿仟佰拾万仟佰拾元"
c2 = "角分"
c3 = "玖捌柒陆伍肆叁贰壹"
If NC = 0 Then
Num2Chi = "零元整"
Exit Function
End If
Num2Chi = ""
Zheng = Mid(NC, 1, (Len(NC) - 3))
Xiao = Mid(NC, (Len(Zheng) + 2))
If Val(Xiao) <> 0 Then
For I = Len(Xiao) To 1 Step -1
chrNum = Mid(Xiao, I, 1)
If chrNum <> 0 Then
Num2Chi = Mid(c2, I, 1) & Num2Chi
Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
End If
Next I
End If
K = 0
If Val(Zheng) <> 0 Then
Num2Chi = "元" & Num2Chi
For I = Len(Zheng) To 1 Step -1
If (Len(Zheng) - I) = 4 Then
Num2Chi = "万" & Num2Chi
ElseIf (Len(Zheng) - I) = 8 Then
Num2Chi = "亿" & Num2Chi
ElseIf (Len(Zheng) - I) = 12 Then
Num2Chi = "万" & Num2Chi
End If
chrNum = Mid(Zheng, I, 1)
If chrNum <> 0 Then
If I = Len(Zheng) Then
Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
Else
If (Len(Zheng) - I) <> 4 And (Len(Zheng) - I) <> 8 And (Len(Zheng) - I) <> 12 Then
Num2Chi = Mid(c1, (Len(c1) - K), 1) & Num2Chi
End If
Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
End If
Else
If Mid(Num2Chi, 1, 1) <> "元" And Mid(Num2Chi, 1, 1) <> "万" And Mid(Num2Chi, 1, 1) <> "亿" Then
If Mid(Num2Chi, 1, 1) <> "零" Then
Num2Chi = "零" & Num2Chi
End If
End If
End If
K = K + 1
Next I
End If
If Right(Trim(Num2Chi), 1) <> "分" Then
Num2Chi = Num2Chi & "整"
End If
End FunctionPrivate Function CNulls( _
ByVal v As Variant, _
ByVal DefaultValue As Variant) As Variant
' determine if it is "Null"
Dim bIsNull As Boolean, t As VbVarType
t = VarType(v)
If t = vbObject Then
bIsNull = v Is Nothing
Else
bIsNull = IsEmpty(v) Or IsNull(v)
If t = vbString Then
bIsNull = bIsNull Or v = vbNullString
ElseIf t > vbArray Then
bIsNull = bIsNull Or (LBound(v) = UBound(v))
End If
End If
If bIsNull Then
If Not IsMissing(DefaultValue) Then
CNulls = DefaultValue
Else
Select Case t
Case vbString
CNulls = vbNullString
Case vbLong ' list seprately for getting more performance
CNulls = 0
Case vbInteger
CNulls = 0
Case vbDouble
CNulls = 0
Case vbBoolean
CNulls = False
Case vbByte, vbCurrency, vbDecimal, vbDouble, _
vbError, vbSingle
CNulls = 0
Case vbDate
CNulls = Now
Case Else
CNulls = Null
End Select
End If
Else
CNulls = v
End If
End Function
复制别人的用起来还不错
' 得到一位数字 N1 的汉字大写
'ToMoney=0,转换为金额样式,=1,转换为数字大写
Private Function Cch(ByVal N1&, ByVal ToMoney&, Optional ByVal CchStr$) As String
Select Case ToMoney
Case 0
CchStr = "零壹贰叁肆伍陆柒捌玖"
Case 1
CchStr = "零一二三四五六七八九"
End Select
On Error Resume Next
Cch = Mid(CchStr, N1 + 1, 1)
End Function'名称: ChMoney
' 得到金额或数字 N1 的汉字大写
' 最大为 千亿位
' O 返回 ""
Public Function ChMoney(ByVal N1, Optional ByVal ToMoney As Boolean = True) As String
Dim tMoney As String
Dim tn '小数位置
Dim S(4) As String, i&, J&, T1$
Dim Cch1$, Cch2&, St1$
Cch1 = "拾佰仟"
Cch2 = IIf(ToMoney, 0, 1)N1 = IIf(ToMoney, Round(Val(N1) + 0.001, 2), Val(N1))
If N1 = 0 Then
ChMoney = ""
Exit Function
End If
If N1 < 0 Then
ChMoney = "负" + ChMoney(Abs(N1))
Exit Function
End If
tMoney = Trim(Str(N1))
tn = InStr(tMoney, ".") '小数位置S(0) = ""
If tn <> 0 Then
St1 = Right(tMoney, Len(tMoney) - tn)
If ToMoney Then
If St1 <> "" Then
T1 = Left(St1, 1)
St1 = Right(St1, Len(St1) - 1)
If T1 <> "0" Then
S(0) = S(0) + Cch(Val(T1), Cch2) + "角"
End If
If St1 <> "" Then
T1 = Left(St1, 1)
S(0) = S(0) + Cch(Val(T1), Cch2) + "分"
End If
End If
Else
For i = 1 To Len(St1)
S(0) = S(0) & Cch(Val(Mid(St1, i, 1)), Cch2)
Next i
End If
St1 = Left(tMoney, tn - 1)
Else
St1 = tMoney
End IfFor i = 1 To 3
S(i) = ""
If St1 <> "" Then
T1 = Right(St1, 1)
St1 = Left(St1, Len(St1) - 1)
S(i) = Cch(Val(T1), Cch2) + S(i)
End If
For J = 1 To 3
If St1 <> "" Then
T1 = Right(St1, 1)
St1 = Left(St1, Len(St1) - 1)
If T1 <> "0" Then
S(i) = Cch(Val(T1), Cch2) + Mid(Cch1, J, 1) + S(i)
Else
If Left(S(i), 1) <> "零" Then S(i) = "零" + S(i)
End If
End If
Next J
If Right(S(i), 1) = "零" Then S(i) = Left(S(i), Len(S(i)) - 1)
If i > 1 And Len(S(i)) > 0 Then
If Right(S(i), 1) = "零" Then S(i) = Left(S(i), Len(S(i)) - 1)
S(i) = S(i) & IIf(i = 2, "万", "亿")
End If
Next iIf Left(S(3), 1) = "零" Then S(3) = Mid(S(3), 2)
S(1) = S(3) & S(2) & S(1)
If S(1) = "" Then
ChMoney = IIf(ToMoney, S(0), "零." & S(0))
Else
ChMoney = IIf(S(0) = "" And Not ToMoney, S(1), S(1) & IIf(ToMoney, "元", ".") & S(0))
End IfEnd Function
Private Function GetCapitalTotle(ByVal tmpStr As String)
Dim Pos As Integer
Dim tChar As String
Dim tLen As Integer
Dim CapStr As String
Dim IntString As String
Dim j As IntegerIntString = Left(tmpStr, InStr(tmpStr, ".") - 1)
tLen = Len(IntString)For i = 1 To tLen
tChar = Left(IntString, 1)
CapStr = CapStr & GetCapChar(tChar)
If Right(CapStr, 1) <> "零" Then
j = Len(IntString)
CapStr = CapStr & GetCapUnit(j)
End If
If Right(CapStr, 2) = "零零" Then
CapStr = Left(CapStr, Len(CapStr) - 1)
End If
IntString = Mid(IntString, 2)
If Val(IntString) = 0 Then
If Right(CapStr, 1) = "零" Then CapStr = Left(CapStr, Len(CapStr) - 1)
CapStr = CapStr & "元"
Exit For
End If
NexttChar = Mid(tmpStr, InStr(tmpStr, ".") + 1)
If tChar <> 0 Then
CapStr = CapStr & GetCapChar(Left(tChar, 1)) & "角"
If Right(tChar, 1) <> 0 Then
CapStr = CapStr & GetCapChar(Right(tChar, 1)) & "分"
End If
End IfGetCapitalTotle = CapStr & "整"
End FunctionPrivate Function GetCapChar(ByVal tmpchar As String) Select Case tmpchar
Case 1
GetCapChar = "壹"
Case 2
GetCapChar = "贰"
Case 3
GetCapChar = "叁"
Case 4
GetCapChar = "肆"
Case 5
GetCapChar = "伍"
Case 6
GetCapChar = "陆"
Case 7
GetCapChar = "柒"
Case 8
GetCapChar = "捌"
Case 9
GetCapChar = "玖"
Case 0
GetCapChar = "零"
End SelectEnd FunctionPrivate Function GetCapUnit(ByVal t As Integer)
Select Case t
Case 5
GetCapUnit = "万"
Case 4
GetCapUnit = "仟"
Case 3
GetCapUnit = "佰"
Case 2
GetCapUnit = "拾"
End Select
End Function
'* 名称:nNumber2Chinese
'* 功能:数值转换为人民币(汉字)
'* 用法:nNumber2Chinese(数值)
'*********************************************************
Public Function Num2Chi(txtJE As Double) As String
Dim I, K As Integer
Dim NC, nd, ka, chrNum, strZheng As String
Dim c1, c2, c3 As String
Dim K1 As Integer
Dim Zheng As String
Dim Xiao As String
NC = Trim(Format(txtJE, "##0.00"))
c1 = "仟佰拾万仟佰拾亿仟佰拾万仟佰拾元"
c2 = "角分"
c3 = "玖捌柒陆伍肆叁贰壹"
If NC = 0 Then
Num2Chi = "零元整"
Exit Function
End If
Num2Chi = ""
Zheng = Mid(NC, 1, (Len(NC) - 3))
Xiao = Mid(NC, (Len(Zheng) + 2))
If Val(Xiao) <> 0 Then
For I = Len(Xiao) To 1 Step -1
chrNum = Mid(Xiao, I, 1)
If chrNum <> 0 Then
Num2Chi = Mid(c2, I, 1) & Num2Chi
Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
End If
Next I
End If
K = 0
If Val(Zheng) <> 0 Then
Num2Chi = "元" & Num2Chi
For I = Len(Zheng) To 1 Step -1
If (Len(Zheng) - I) = 4 Then
Num2Chi = "万" & Num2Chi
ElseIf (Len(Zheng) - I) = 8 Then
Num2Chi = "亿" & Num2Chi
ElseIf (Len(Zheng) - I) = 12 Then
Num2Chi = "万" & Num2Chi
End If
chrNum = Mid(Zheng, I, 1)
If chrNum <> 0 Then
If I = Len(Zheng) Then
Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
Else
If (Len(Zheng) - I) <> 4 And (Len(Zheng) - I) <> 8 And (Len(Zheng) - I) <> 12 Then
Num2Chi = Mid(c1, (Len(c1) - K), 1) & Num2Chi
End If
Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
End If
Else
If Mid(Num2Chi, 1, 1) <> "元" And Mid(Num2Chi, 1, 1) <> "万" And Mid(Num2Chi, 1, 1) <> "亿" Then
If Mid(Num2Chi, 1, 1) <> "零" Then
Num2Chi = "零" & Num2Chi
End If
End If
End If
K = K + 1
Next I
End If
If Right(Trim(Num2Chi), 1) <> "分" Then
Num2Chi = Num2Chi & "整"
End If
End Function