This is an old revision of the document!
Diese Funktion erstellt aus einem technischen Namen ein halbwegs lesbarer Namen. Ich verwende die Funktion häufig um automatisch generierte Reports mit besser lesbaren Titeln zu versehen. Insofern ist die Funktion das Gegenpart von techname.
name = readableName(technischer Name [, Type des technischen Namens])
Public Function readableName( _ ByVal iTechName As String, _ Optional ByVal iType As rnTechNameType = rnAutomaitc _ ) As String
Die Beispiele wurden im Direktfenster erstellt
?readableName("ITEM_NAME") Item Name ?readableName("ItemName1") Item Name 1 ?readableName("Ort", rnUnderline) Ort
'------------------------------------------------------------------------------- '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