• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Tekst naar kolommen in een macro

Status
Niet open voor verdere reacties.

Natasja Witteve

Gebruiker
Lid geworden
23 jan 2009
Berichten
25
Hoi,

Ik ben nieuw op het forum, maar heb het al vaak gebruikt om problemen op m´n werk op te lossen. Nu kom ik er echter niet uit... Ik wil cheques zo automatisch mogelijk laten drukken. (In plaats van handmatig schrijven.) Daarvoor moet ik bedragen ook uit kunnen schrijven (bijv. 235,10 wordt twee - drie - vijf en daar onder een - nul).
Met waarden kopieren, tekst naar kolommen en een als functie om een getal uit te schrijven, kom ik hier een heel eind mee. Het is alleen wel erg omslachtig. Ik wil daarom alle stappen doorlopen met een macro. Alleen blijkt dit niet te werken bij tekst naar kolommen. De getallen verschijnen in het geheel in de nieuwe kolom waarbij de , vervangen is door . Hoe los ik dit op? En zijn er nog snelle mogelijkheden om dit te doen?

Bijgevoegd een testbestandje om e.e.a. te verduidelijken.

Groetjes,
Natasja
 

Bijlagen

Ik heb een functie (bedragomzetten) toegevoegd aan het bestand.

Syntax: bedragomzetten(bedrag;voor komma)
Bijv.
- bedragomzetten(1,50,WAAR) --> eins.
- bedragomzetten(1,50,ONWAAR) --> fünf - null.

In kolommen AK en AL staat de formule.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Wat zie je dan in de betreffende kolommen?

Met vriendelijke groet,


Roncancio
 
Beste Natasja Witteve ;)

Het is een functie zoals Roncancio al aan gaf.
Ga in een cel staan en ga naar de knop functie invoegen, daar zal je de formule bedragomzetten zien staan.
WAAR zijn de eeste cijfers voor de comma en ONWAAR zijn de tweede cijfers na de comma.

PS. zag ik daar juist niet dat Natasja Witteve had geantwoord ?

Groetjes Danny. :thumb:
 
Hier een nieuw antwoord...

Beste Natasja Witteve ;)

Het is een functie zoals Roncancio al aan gaf.
Ga in een cel staan en ga naar de knop functie invoegen, daar zal je de formule bedragomzetten zien staan.
WAAR zijn de eeste cijfers voor de comma en ONWAAR zijn de tweede cijfers na de comma.

PS. zag ik daar juist niet dat Natasja Witteve had geantwoord ?

Groetjes Danny. :thumb:

Hoi Roncancio en Danny,
Ik had inderdaad, voorbarig, geantwoord, dat ik de formules niet kon vinden. Dat bericht heb ik direct erna verwijderd, dus vandaar. Nu heb ik de formule (dank daarvoor!) maar kunnen jullie ook aangeven hoe het in elkaar zit? En ik kan de formule hier (= Duitsland) niet kopieren. Kennen jullie ook de Duitse versie? Ik heb ergens van dit forum een lijst gehaald met alle formules, per land. Deze staat er echter niet bij, ook niet in de kolom voor Nederlands.

Groetjes,
Natasja
 
Hoi Roncancio en Danny,
Ik had inderdaad, voorbarig, geantwoord, dat ik de formules niet kon vinden. Dat bericht heb ik direct erna verwijderd, dus vandaar. Nu heb ik de formule (dank daarvoor!) maar kunnen jullie ook aangeven hoe het in elkaar zit? En ik kan de formule hier (= Duitsland) niet kopieren. Kennen jullie ook de Duitse versie? Ik heb ergens van dit forum een lijst gehaald met alle formules, per land. Deze staat er echter niet bij, ook niet in de kolom voor Nederlands.

Groetjes,
Natasja

Even voor de duidelijk.
De formule BedragOmzetten heb ik gemaakt en in je bestand geplaatst.
Het is dus geen "gewone" formule die in elk Excelbestand staat.
De syntax is als volgt:

=BedragOmzetten(Bedrag;voor komma) Bijvoorbeeld:
=BedragOmzetten(123,45;WAAR) wordt dus:
eins - zwei - drei

Alles klar?:p

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Beste Natasja Witteve ;)

Het is een code die je terug vind als je ALT+F11 typt.
Dan zie je deze code staan.

Als je de TG veranderd van Duits naar Nederlands dat kan.

Code:
Function BedragOmzetten(rBereik As Range, bBComma As Boolean) As String
Application.Volatile
If bBComma = True Then
    lbeg = 1
    lpos = WorksheetFunction.Find(",", rBereik.Text) - 1
Else
    lbeg = WorksheetFunction.Find(",", rBereik.Text) + 1
    lpos = Len(rBereik.Text)
End If
For t = lbeg To lpos
    Select Case Mid(rBereik.Text, t, 1)
        Case 0
            TG = "null"
        Case 1
            TG = "eins"
        Case 2
            TG = "zwei"
        Case 3
            TG = "drei"
        Case 4
            TG = "vier"
        Case 5
            TG = "fünf"
        Case 6
            TG = "sechs"
        Case 7
            TG = "sieben"
        Case 8
            TG = "acht"
        Case 9
            TG = "neun"
    End Select
    tekst = tekst & TG & " - "

Next
BedragOmzetten = Left(tekst, Len(tekst) - 2)
End Function

Groetjes Danny :thumb:
 
Als je de TG veranderd van Duits naar Nederlands dat kan.

Wie bitte::cool:
TG is een variabele die ik vergeten ben te definiëren (:o:o).
Er bestaat geen TG in welke taal dan ook.

Ik heb even snel de code herschreven en variabelen te declareren.
Code:
Function BedragOmzetten(rBereik As Range, bBComma As Boolean) As String
Dim lBeg As Long
Dim lPos As Long
Dim lLus As Long
Dim sTG As String
Dim sTekst As String

    Application.Volatile
    
    If bBComma = True Then
        lBeg = 1
        lPos = WorksheetFunction.Find(",", rBereik.Text) - 1
    Else
        lBeg = WorksheetFunction.Find(",", rBereik.Text) + 1
        lPos = Len(rBereik.Text)
    End If
    For lLus = lBeg To lPos
        Select Case Mid(rBereik.Text, lLus, 1)
            Case 0
                sTG = "null"
            Case 1
                sTG = "eins"
            Case 2
                sTG = "zwei"
            Case 3
                sTG = "drei"
            Case 4
                sTG = "vier"
            Case 5
                sTG = "fünf"
            Case 6
                sTG = "sechs"
            Case 7
                sTG = "sieben"
            Case 8
                sTG = "acht"
            Case 9
                sTG = "neun"
        End Select
        sTekst = sTekst & sTG & " - "
    
    Next
    BedragOmzetten = Left(sTekst, Len(sTekst) - 2)
End Function

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Wat zie je dan in de betreffende kolommen?

Met vriendelijke groet,


Roncancio


Hoi Roncancio,

Zie ook mijn quote bij Danny: ik was voorbarig...
Maar goed, inmiddels heb ik alles in beeld en het werkt geweldig (en ongeveer 100 x zo snel). Weet je ook wat de Duitse formule is of hoe ik daar achter kan komen? Verder zit er een foutje in: het tweede getal komt zowel op de tweede, als de derde positie. Ik heb de Duitse formule (nog) niet en het lukt me niet om de fout uit de formule te halen.

Bij voorbaat dank voor je hulp!
Natasja
 
Ik heb opnieuw de code aangepast om de door jou gevonden fout te verwijderen.

Code:
Function BedragOmzetten(rBereik As Range, bBComma As Boolean) As String
Dim lBeg As Long
Dim lPos As Long
Dim lLus As Long
Dim sTG As String
Dim sTekst As String

    Application.Volatile
    
    If bBComma = True Then
        lBeg = 1
        lPos = WorksheetFunction.Find(",", rBereik.Text) - 1
    Else
        lBeg = WorksheetFunction.Find(",", rBereik.Text) + 1
        lPos = Len(rBereik.Text)
    End If
    For lLus = lBeg To lPos
        Select Case Mid(rBereik.Text, lLus, 1)
            Case 0
                sTG = "null"
            Case 1
                sTG = "eins"
            Case 2
                sTG = "zwei"
            Case 3
                sTG = "drei"
            Case 4
                sTG = "vier"
            Case 5
                sTG = "fünf"
            Case 6
                sTG = "sechs"
            Case 7
                sTG = "sieben"
            Case 8
                sTG = "acht"
            Case 9
                sTG = "neun"
            Case Else
                sTG = ""
        End Select
        If sTG > "" Then sTekst = sTekst & sTG & " - "
    Next
    BedragOmzetten = Trim$(Left(sTekst, Len(sTekst) - 2))
End Function

De code kan je in een bestand plaatsen, zoals ik en Danny147 in vorige reacties al hebben gemeld.
Sie brauchen nichts zu ubersetzen!:p

Met vriendelijke groet,


Roncancio
 
Bedankt

Hoi,

Super bedankt! Van het bestaan van deze mogelijkheden had ik geen idee! Hoe kan ik dit zelf leren schrijven?

Nogmaals dank, ik ben enorm geholpen!!!

Natasja


Ik heb opnieuw de code aangepast om de door jou gevonden fout te verwijderen.

Code:
Function BedragOmzetten(rBereik As Range, bBComma As Boolean) As String
Dim lBeg As Long
Dim lPos As Long
Dim lLus As Long
Dim sTG As String
Dim sTekst As String

    Application.Volatile
    
    If bBComma = True Then
        lBeg = 1
        lPos = WorksheetFunction.Find(",", rBereik.Text) - 1
    Else
        lBeg = WorksheetFunction.Find(",", rBereik.Text) + 1
        lPos = Len(rBereik.Text)
    End If
    For lLus = lBeg To lPos
        Select Case Mid(rBereik.Text, lLus, 1)
            Case 0
                sTG = "null"
            Case 1
                sTG = "eins"
            Case 2
                sTG = "zwei"
            Case 3
                sTG = "drei"
            Case 4
                sTG = "vier"
            Case 5
                sTG = "fünf"
            Case 6
                sTG = "sechs"
            Case 7
                sTG = "sieben"
            Case 8
                sTG = "acht"
            Case 9
                sTG = "neun"
            Case Else
                sTG = ""
        End Select
        If sTG > "" Then sTekst = sTekst & sTG & " - "
    Next
    BedragOmzetten = Trim$(Left(sTekst, Len(sTekst) - 2))
End Function

De code kan je in een bestand plaatsen, zoals ik en Danny147 in vorige reacties al hebben gemeld.
Sie brauchen nichts zu ubersetzen!:p

Met vriendelijke groet,


Roncancio
 
Het is vaak een kwestie van proberen.
Er zijn wel tools op internet om te leren of te oefenen.
Verder zijn er de nodige VBA-boeken om te leren programmeren in Excel.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan