Vraag : SpellNumber

Waarom wanneer I '' SpellNumber (A1) '' het „EN“ vóór aantallen groter dan 10.000.000 opneemt? Is het omdat de cellen het omzet muntformaat? zijn? En waarom, als er pence in kwestie zijn neemt het op „en“ in kleine letters? Hulp! Thanks

Antwoord : SpellNumber

Opnieuw is al code inbegrepen en er zijn twee moeilijke situaties,
lege winst spatie
winst 1 één pund d.w.z. enkelvoud

Chris
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:
Functie spellnumber (numberRange als Waaier)
    Als numberRange = "" toen
        spellnumber = ""
    Anders
        spellnumber = Currency2Words (numberRange, „Ponden“, „Pence“)
    Eind als
De Functie van het eind

Functie Currency2Words (ByVal MyNumber, Facultatieve strUnits, Facultatieve strFrac)
Schemerige Temperaturen
Schemerige Eenheden
Schemerige Frac
Schemerige DecimalPlace
Schemerige Telling

    Als IsMissing (strUnits) Dan strUnits = „Dollars“
    Als IsMissing (strFrac) Dan strFrac = „Centen“
    De Plaats van ReDim (9) als Koord
    Plaats (2) = „Duizend“
    Plaats (3) = „Miljoen“
    Plaats (4) = „Miljard“
    Plaats (5) = „Triljoen“

         
    MyNumber = Versiering (streptokok (MyNumber))
    DecimalPlace = InStr (MyNumber, „. “)
    Als DecimalPlace > 0 toen
        Temperaturen = Weggegaan (Medio (MyNumber, DecimalPlace + 1) & „00“, 2)
        Frac = ConvertTens (Temperaturen)
        MyNumber = Verlaten Versiering ((MyNumber, DecimalPlace - 1))
    Eind als

    Telling = 1
    Doe terwijl MyNumber <> ""
        Temperaturen = Juiste ConvertHundreds ((MyNumber, 3))
        Als de Eenheden <> van Temperaturen "" toen = Temperaturen & Plaats (Telling) & Eenheden
        Als Len (MyNumber) > 3 toen
          MyNumber = Weggegaan (MyNumber, Len (MyNumber) - 3)
       Anders
          MyNumber = ""
       Eind als
       Telling = Telling + 1
    Lijn

    Eenheden = Versiering (Eenheden) & „„
    Selecteer de Versiering van het Geval (Eenheden)
       Geval ""
          Eenheden = „Geen“ "" '& strUnits
       Geval „Één“
          Eenheden = „Één“ & Weggegaan (strUnits, Len (strUnits) - 1)
       Geval anders
          Eenheden = Eenheden & strUnits
    Uitgezocht eind
    Selecteer de Versiering van het Geval (Frac)
       Geval ""
          Frac = "" '„en Geen“ & strFrac
       Geval „Één“
          Als Eenheden = "" toen
            Frac = Frac & „„& strFrac
          Anders
            Frac = „en Één“ & Weggegaan (strFrac, Len (strFrac) - 1)
        Eind als
       Geval anders
          Als Eenheden = "" toen
            Frac = Frac & „„& strFrac
          Anders
            Frac = „en“ & Frac & „„& strFrac
          Eind als
    Uitgezocht eind

    Als Eenheden = "" toen
        Currency2Words = Frac
    Anders
        Currency2Words = Eenheden & Frac
    Eind als
    Currency2Words = vervang (Versiering (Currency2Words), „  „,“ „)
Beëindig Functie

Privé Functie ConvertHundreds (ByVal MyNumber)
Verduister Resultaat als Koord

    Als Val (MyNumber) = 0 dan Functie weggaat
    MyNumber = Juist („000“ & MyNumber, 3)

    'Honderden
    Indien Verlaten (MyNumber, 1) <> „0“ toen
       Resultaat = Verlaten ConvertDigit ((MyNumber, 1)) & „Honderd“
    Eind als

    'tientallen
    Als Medio (MyNumber, 2, 1) <> „0“ toen
       Resultaat = Medio Resultaat & ConvertTens ((MyNumber, 2))
    Anders
       Resultaat = Medio Resultaat & ConvertDigit ((MyNumber, 3))
    Eind als

    ConvertHundreds = Versiering (Resultaat)
De Functie van het eind

Privé Functie ConvertTens (ByVal MyTens)
Verduister Resultaat als Koord

    'Is de waarde tussen 10 en 19?
    Als Verlaten Val ((MyTens, 1)) = 1 toen
        Selecteer Geval Val (MyTens)
            Geval 10: Resultaat = „Tien“
            Geval 11: Resultaat = „Elf“
            Geval 12: Resultaat = „Twaalf“
            Geval 13: Resultaat = „Dertien“
            Geval 14: Resultaat = „Veertien“
            Geval 15: Resultaat = „Vijftien“
            Geval 16: Resultaat = „Zestien“
            Geval 17: Resultaat = „Zeventien“
            Geval 18: Resultaat = „Achttien“
            Geval 19: Resultaat = „Negentien“
            Geval anders
        Uitgezocht eind
    Anders
        '. anders is het tussen 20 en 99.
        Selecteer Geval Val (links (MyTens, 1))
            Geval 2: Resultaat = „Twintig“
            Geval 3: Resultaat = „Dertig“
            Geval 4: Resultaat = „Veertig“
            Geval 5: Resultaat = „Vijftig“
            Geval 6: Resultaat = „Zestig“
            Geval 7: Resultaat = „Zeventig“
            Geval 8: Resultaat = „Tachtig“
            Geval 9: Resultaat = „Negentig“
            Geval anders
        Uitgezocht eind

        'Zet het cijfer van de degenenplaats om.
        Resultaat = Juist Resultaat & ConvertDigit ((MyTens, 1))
    Eind als

    ConvertTens = Resultaat
De Functie van het eind

Privé Functie ConvertDigit (ByVal MyDigit)
    Selecteer Geval Val (MyDigit)
        Geval 1: ConvertDigit = „Één“
        Geval 2: ConvertDigit = „Twee“
        Geval 3: ConvertDigit = „Drie“
        Geval 4: ConvertDigit = „Vier“
        Geval 5: ConvertDigit = „Vijf“
        Geval 6: ConvertDigit = „Zes“
        Geval 7: ConvertDigit = „Zeven“
        Geval 8: ConvertDigit = „Acht“
        Geval 9: ConvertDigit = „Negen“
        Geval anders: ConvertDigit = ""
    Uitgezocht eind
De Functie van het eind
Andere oplossingen  
 
programming4us programming4us