Attribute VB_Name = "udf_readableName" '------------------------------------------------------------------------------- 'File : udf_readableName.bas ' Copyright mpl by ERB software ' All rights reserved ' http://wiki.yaslaw.info/dokuwiki/doku.php/vba/cast/strtodate 'Environment : VBA 2007 + 'Version : 1.0.1 'Name : readableName 'Author : Stefan Erb (ERS) 'History : 17.06.2014 - ERS - Creation ' 08.07.2014 - ERS - kleinere Korrekturen '------------------------------------------------------------------------------- Option Explicit Public Enum rnTechNameType rnUnderline 'Die Wörter sind beim technischen Namen mit Unterstriche getrennt. FOO_BAR -> Foo Bar rnCamelCase 'Die Wörter sind mit CamelCase getrennt. FooBar -> Foo Bar rnAutomaitc 'Die Funktion findet selber heraus, welcher Type es ist. Kommt ein : im Text for, ist es rnUnderline, ansonsten rnCamelCase End Enum Private rxCacheCamelCase As Object '/** ' * Entspricht dem Gegenteil von techName. macht aus Technischen Namen lesbare Namen ' * ' * name = readableName(technischer Name [, Type des technischen Namens]) ' * ' * @param String Der Technische Name ' * @param rnTechNameType Art der Worttrennung ' * @return String ' */ Public Function readableName( _ ByVal iTechName As String, _ Optional ByVal iType As rnTechNameType = rnAutomaitc _ ) As String Dim words() As String Dim idx As Integer PARSE: Select Case iType Case rnAutomaitc iType = IIf(InStr(iTechName, "_") > 0, rnUnderline, rnCamelCase) GoTo PARSE 'Try with the neu type Case rnUnderline words = split(iTechName, "_") Case rnCamelCase 'initialize cached regExp If rxCacheCamelCase Is Nothing Then Set rxCacheCamelCase = CreateObject("VBScript.RegExp") rxCacheCamelCase.Global = True rxCacheCamelCase.pattern = "([A-Z][a-z_]*|[a-z_]+|[\d_]+)" End If If Not rxCacheCamelCase.Test(iTechName) Then ReDim words(0): words(0) = iTechName Else Dim mc As Object: Set mc = rxCacheCamelCase.execute(iTechName) ReDim words(mc.count - 1): For idx = 0 To mc.count() - 1 words(idx) = mc(idx) Next idx End If End Select readableName = StrConv(join(words, " "), vbProperCase) End Function