Als er één functie is binnen VBA die ik eigenlijk altijd meteen in een workbook plaats voordat ik begin met scripten dan is het wel de onderstaande kolomtxt functie. De reden hiervoor is dat je bijna altijd binnen Excel werkt met het aangeven van ranges. Voor ranges binnen Excel worden de kolommen gekoppeld aan letters en de rijen aan cijfers. Als ik echter de .find zoekfunctie gebruik dan wordt de kolom van de gevonden cell teruggegeven als cijfer. Indien ik deze kolom vervolgens weer wil gebruiken in een range dan zal ik dit getal dus moeten omzetten naar een letter. De onderstaande functie doet deze omzetting voor je. Denk er wel aan dat je om deze functie te gebruiken de variabele met de kolomcijfer moet dimmen als een integer en de output ( de kolomletter) als een string.
Public Function KolomTxt(Kolom As Integer) As String
Dim strLinks As String
Dim kolomBehouden As Integer
kolomBehouden = Kolom
If Kolom > 26 Then
strLinks = Chr$(Int(Kolom / 26) + 64)
Kolom = Kolom Mod 26
End If
If Kolom = 0 Then
strLinks = Chr$(Asc(strLinks) - 1)
KolomTxt = strLinks & "Z"
Else
KolomTxt = strLinks & Chr$(Kolom + 64)
End If
Kolom = kolomBehouden
End Function
Letters omzetten naar cijfers VBA
Indien je letters om wilt zetten naar cijfers dan kun je dit ook makkelijk doen door deze letter te gebruiken in een kolom. Wat je dan doet is de letter gebruiken in een range om een kolom mee aan te duiden. Als je vervolgens achter deze range ‘.column’ plaatst dan krijg je het nummer van de locatie van de letter in het alfabet.
Sub LetterOmzettenNaarCijfer()
kolom = Blad1.Range("B1").Column
MsgBox kolom
End Sub
Als je de bovenstaande code afspeelt dan zie je dat de waarde van kolom het cijfer 2 is. Dit staat gelijk aan de positie van de letter B in het alfabet.
Mocht je vragen hebben met de toepassing van deze functie. Laat het mij weten via de reacties!
Pingback:Structuur van een macro / VBA script - Macro Excel Advies
Pingback:Ranges in VBA - Macro Excel Advies
Pingback:De range.find methode VBA Excel -