Initialen Vba

Status
Niet open voor verdere reacties.

annetiti

Gebruiker
Lid geworden
6 aug 2007
Berichten
195
Hallo

Kan iemand mij helpen met de functie Initialen. De FOR i lus loopt niet juist.
Bedoeling is om uit een naam vb "axx bxx cxx dxx" enkel de beginletters samen te voegen = "abcd"
Maar er is iets foutief in de for I lus. (hier loopt het mank!!)

Alvast bedankt voor de hulp.

Hier volgt de code:

Code:
Public Function initialen(strInput As String) As String
  Dim i As Integer
  Dim strOut As String
  Dim strChar As String
  Dim resultaat As String
  i = 1
   
  If InStr(1, strInput, " ") = 0 Then
    initialen = Left(strInput, 1)
    Exit Function
  End If
  
  For i = [COLOR="#FF0000"]InStr(1, strInput, " ") To Len(strInput)[/COLOR]
    resultaat = resultaat & Mid(strInput, i + 1, 1)
    strInput = Right(strInput, Len(strInput) - i)
  Next
  initialen = resultaat
End Function




Public Sub anne_initaal()
Dim xx As String
xx = initialen("axx bxxb cxx dxx")
End Sub
 
In je For loop heeft de variabele i altijd de positie van de eerste spatie en wordt dus nooit hoger. Daarnaast kan het een stuk eenvoudiger door gebruik te maken van de functie Split():
https://msdn.microsoft.com/en-us/library/6x627e5f(v=vs.90).aspx

Doe het dus eens zo:
Code:
Function Initialen(Naam As String) As String
    Dim i As Integer
    Dim aNaam() As String

    aNaam = Split(Naam, " ")
    For i = 0 To UBound(aNaam)
        Initialen = Initialen & Left(aNaam(i), 1)
    Next i
End Function
 
Laatst bewerkt:
Dag Edmoor

Deze functie werkt prima. Toegepast in mijn applicatie maar zit met één klein probleempje.
De functie Split had ik nog nooit gebruikt.

Dikke Merci
Anne
Anne
 
De werking van die functie staat dus beschreven in de link die ik erbij plaatste :)
 
De functie Split had ik nog nooit gebruikt.
Zet de cursor in de functie, en druk op <F1> Krijg je elke hulp die je nodig hebt. En, best een voordeel, deze truc werkt bij elke functie.
 
Standaard kent de functie Split de spatie als scheidingsteken.
aNaam = Split(Naam, " ")
aNaam = split(naam)
 
Klopt. Maar voor de leesbaarheid vind ik het zelf prettiger dit toch uit te schrijven.
 
Dit geldt natuurlijk niet voor gevorderden (waar jij onder valt), maar voor aanvangers van Vba waar jij het voor uitschrijft bedoel je. :thumb:
Daar is niet mis mee, en was ook niet zo bedoelt hoor.
 
Dat het niet verkeerd bedoeld is weet ik wel. Ik wilde alleen aangeven waarom ik de spatie er zelf wel bij zet :)
 
Hartelijk dank voor de uitleg. Mooi geïntegreerd in de applicatie.
groeten
Anne
 
Of gebruik voor de tekst in cel A1::

Code:
Sub M_snb()
  msgbox  Join([transpose(if(mid(" "&A1,row(1:100),1)=" ",upper(mid(" "&A1,row(1:100)+1,1)),""))], "")
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan