Question : Excel marco (digital to character )

Hi,

I want to moify the following code as  the result :

 HK Dollars xxxxx  and Cents  xxxxxx.

Regards
Stanley



Function ConvertCurrencyToEnglish(ByVal MyNumber)

Dim Temp

         Dim Dollars, Cents

         Dim DecimalPlace, Count



         ReDim Place(9) As String

         Place(2) = " Thousand "

         Place(3) = " Million "

         Place(4) = " Billion "

         Place(5) = " Trillion "



         ' Convert MyNumber to a string, trimming extra spaces.

         MyNumber = Trim(Str(MyNumber))



         ' Find decimal place.

         DecimalPlace = InStr(MyNumber, ".")



         ' If we find decimal place...

         If DecimalPlace > 0 Then

            ' Convert cents

            Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)

            Cents = ConvertTens(Temp)



            ' Strip off cents from remainder to convert.

            MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

         End If



         Count = 1

         Do While MyNumber <> ""

            ' Convert last 3 digits of MyNumber to English dollars.

            Temp = ConvertHundreds(Right(MyNumber, 3))

            If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars

            If Len(MyNumber) > 3 Then

               ' Remove last 3 converted digits from MyNumber.

               MyNumber = Left(MyNumber, Len(MyNumber) - 3)

            Else

               MyNumber = ""

            End If

            Count = Count + 1

         Loop



         ' Clean up dollars.

         Select Case Dollars

            Case ""

               Dollars = "No Dollars"

            Case "One"

               Dollars = "One Dollar"

            Case Else

               Dollars = Dollars & " Dollars"

         End Select



         ' Clean up cents.

         Select Case Cents

            Case ""

               Cents = " And No Cents"

            Case "One"

               Cents = " And One Cent"

            Case Else

               Cents = " And " & Cents & " Cents"

         End Select



         ConvertCurrencyToEnglish = Dollars & Cents

End Function







Private Function ConvertHundreds(ByVal MyNumber)

Dim Result As String



         ' Exit if there is nothing to convert.

         If Val(MyNumber) = 0 Then Exit Function



         ' Append leading zeros to number.

         MyNumber = Right("000" & MyNumber, 3)



         ' Do we have a hundreds place digit to convert?

         If Left(MyNumber, 1) <> "0" Then

            Result = ConvertDigit(Left(MyNumber, 1)) & " Hundred "

         End If



         ' Do we have a tens place digit to convert?

         If Mid(MyNumber, 2, 1) <> "0" Then

            Result = Result & ConvertTens(Mid(MyNumber, 2))

         Else

            ' If not, then convert the ones place digit.

            Result = Result & ConvertDigit(Mid(MyNumber, 3))

         End If



         ConvertHundreds = Trim(Result)

End Function







Private Function ConvertTens(ByVal MyTens)

Dim Result As String



         ' Is value between 10 and 19?

         If Val(Left(MyTens, 1)) = 1 Then

            Select Case Val(MyTens)

               Case 10: Result = "Ten"

               Case 11: Result = "Eleven"

               Case 12: Result = "Twelve"

               Case 13: Result = "Thirteen"

               Case 14: Result = "Fourteen"

               Case 15: Result = "Fifteen"

               Case 16: Result = "Sixteen"

               Case 17: Result = "Seventeen"

               Case 18: Result = "Eighteen"

               Case 19: Result = "Nineteen"

               Case Else

            End Select

         Else

            ' .. otherwise it's between 20 and 99.

            Select Case Val(Left(MyTens, 1))

               Case 2: Result = "Twenty "

               Case 3: Result = "Thirty "

               Case 4: Result = "Forty "

               Case 5: Result = "Fifty "

               Case 6: Result = "Sixty "

               Case 7: Result = "Seventy "

               Case 8: Result = "Eighty "

               Case 9: Result = "Ninety "

               Case Else

            End Select



            ' Convert ones place digit.

            Result = Result & ConvertDigit(Right(MyTens, 1))

         End If



         ConvertTens = Result

End Function







Private Function ConvertDigit(ByVal MyDigit)

Select Case Val(MyDigit)

            Case 1: ConvertDigit = "One"

            Case 2: ConvertDigit = "Two"

            Case 3: ConvertDigit = "Three"

            Case 4: ConvertDigit = "Four"

            Case 5: ConvertDigit = "Five"

            Case 6: ConvertDigit = "Six"

            Case 7: ConvertDigit = "Seven"

            Case 8: ConvertDigit = "Eight"

            Case 9: ConvertDigit = "Nine"

            Case Else: ConvertDigit = ""

         End Select

End Function

Answer : Excel marco (digital to character )

Try this
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
Function ConvertCurrencyToEnglish(ByVal MyNumber)

Dim Temp

         Dim Dollars, Cents

         Dim DecimalPlace, Count



         ReDim Place(9) As String

         Place(2) = " Thousand "

         Place(3) = " Million "

         Place(4) = " Billion "

         Place(5) = " Trillion "



         ' Convert MyNumber to a string, trimming extra spaces.

         MyNumber = Trim(Str(MyNumber))



         ' Find decimal place.

         DecimalPlace = InStr(MyNumber, ".")



         ' If we find decimal place...

         If DecimalPlace > 0 Then

            ' Convert cents

            Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)

            Cents = ConvertTens(Temp)



            ' Strip off cents from remainder to convert.

            MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

         End If



         Count = 1

         Do While MyNumber <> ""

            ' Convert last 3 digits of MyNumber to English dollars.

            Temp = ConvertHundreds(Right(MyNumber, 3))

            If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars

            If Len(MyNumber) > 3 Then

               ' Remove last 3 converted digits from MyNumber.

               MyNumber = Left(MyNumber, Len(MyNumber) - 3)

            Else

               MyNumber = ""

            End If

            Count = Count + 1

         Loop



         ' Clean up dollars.

         Select Case Dollars

            Case ""

               Dollars = "No HK Dollars"

            Case "One"

               Dollars = "HK Dollars One"

            Case Else

               Dollars = "HK Dollars " & Dollars

         End Select



         ' Clean up cents.

         Select Case Cents

            Case ""

               Cents = " Only"

            Case "One"

               Cents = " And Cents One"

            Case Else

               Cents = " And Cents " & Cents

         End Select



         ConvertCurrencyToEnglish = Dollars & Cents

End Function







Private Function ConvertHundreds(ByVal MyNumber)

Dim Result As String



         ' Exit if there is nothing to convert.

         If Val(MyNumber) = 0 Then Exit Function



         ' Append leading zeros to number.

         MyNumber = Right("000" & MyNumber, 3)



         ' Do we have a hundreds place digit to convert?

         If Left(MyNumber, 1) <> "0" Then

            Result = ConvertDigit(Left(MyNumber, 1)) & " Hundred "

         End If



         ' Do we have a tens place digit to convert?

         If Mid(MyNumber, 2, 1) <> "0" Then

            Result = Result & ConvertTens(Mid(MyNumber, 2))

         Else

            ' If not, then convert the ones place digit.

            Result = Result & ConvertDigit(Mid(MyNumber, 3))

         End If



         ConvertHundreds = Trim(Result)

End Function







Private Function ConvertTens(ByVal MyTens)

Dim Result As String



         ' Is value between 10 and 19?

         If Val(Left(MyTens, 1)) = 1 Then

            Select Case Val(MyTens)

               Case 10: Result = "Ten"

               Case 11: Result = "Eleven"

               Case 12: Result = "Twelve"

               Case 13: Result = "Thirteen"

               Case 14: Result = "Fourteen"

               Case 15: Result = "Fifteen"

               Case 16: Result = "Sixteen"

               Case 17: Result = "Seventeen"

               Case 18: Result = "Eighteen"

               Case 19: Result = "Nineteen"

               Case Else

            End Select

         Else

            ' .. otherwise it's between 20 and 99.

            Select Case Val(Left(MyTens, 1))

               Case 2: Result = "Twenty "

               Case 3: Result = "Thirty "

               Case 4: Result = "Forty "

               Case 5: Result = "Fifty "

               Case 6: Result = "Sixty "

               Case 7: Result = "Seventy "

               Case 8: Result = "Eighty "

               Case 9: Result = "Ninety "

               Case Else

            End Select



            ' Convert ones place digit.

            Result = Result & ConvertDigit(Right(MyTens, 1))

         End If



         ConvertTens = Result

End Function







Private Function ConvertDigit(ByVal MyDigit)

Select Case Val(MyDigit)

            Case 1: ConvertDigit = "One"

            Case 2: ConvertDigit = "Two"

            Case 3: ConvertDigit = "Three"

            Case 4: ConvertDigit = "Four"

            Case 5: ConvertDigit = "Five"

            Case 6: ConvertDigit = "Six"

            Case 7: ConvertDigit = "Seven"

            Case 8: ConvertDigit = "Eight"

            Case 9: ConvertDigit = "Nine"

            Case Else: ConvertDigit = ""

         End Select

End Function
Random Solutions  
 
programming4us programming4us