MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - Code Archiv
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 28.08.2015, 10:51   #1
CptChaos
MOF Guru
MOF Guru
Standard Codebeispiel - StringFormat - .NET-Komfort bei der Stringzusammensetzung in VBA

Nachdem ich die Möglichkeit von String.Format in .NET kennen gelernt habe, war es mir immer wieder ein "Graus" einen String in VBA zusammen zu setzen.

Daher habe ich mir bereits vor geraumer Zeit eine Prozedur geschrieben, welche den Mechanismus aus .NET nachbildet und in VBA anbietet.
Code:

Option Explicit

'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'===========================================================================================================================
' Module    : BW_StringHelper, © Benny Wunder (2014)
' Version   : 1.1.0
' Type      : Standard Module
' Author    : Benny Wunder, bw-services.net
'           : Inspired from SmartClasses which was showed on AEK14 by Michael Zimmermann
' Date      : 2014|05|15
' Purpose   : The module provides procedures and functions to get the comfort of a .NET-String in VBA
' Licence   : This example is free to use and adopt it in your own solutions without changing the author information in the
'           : moduleheader.
' Changelog : 1.0.0 | Initial release
'           : 1.1.0 | Limited parameterlist changed to ParamArray
'===========================================================================================================================
'///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


'---------------------------------------------------------------------------------------------------------------------------
' Procedure : StringFormat
' Purpose   : Provides the .NET-StringFormat Method to build a complex string value.
'           : StringToFormat contains the string including the variables in curly brackets.
'           : Variables for replacing the placeholders will be set as an ParamArray
'---------------------------------------------------------------------------------------------------------------------------
' Example   : StringFormat("This is a {0} {1} string", "very", "simple") returns ->  "This is a very simple string".
'---------------------------------------------------------------------------------------------------------------------------
Public Function StringFormat(ByVal StringToFormat As String, ParamArray params() As Variant) As String
On Error GoTo Exit_StringFormat

Dim result As String
Dim i As Integer
Dim regEx As Object
Dim arrParams() As Variant

    If IsArray(params(0)) Then
        If UBound(params) = 0 Then arrParams = params(0)
    Else
        arrParams = params
    End If
    
    Set regEx = CreateObject("VBScript.RegExp")
        With regEx
            .Global = True
            .IgnoreCase = True
            
            result = StringToFormat
            For i = 0 To UBound(arrParams)
                .Pattern = "\{" & i & "\}"
                result = .Replace(result, CStr(arrParams(i)))
            Next i
        End With
    
Exit_StringFormat:
    Select Case Err.number
        Case 0
        Case 429
            result = StringToFormat
            GoSub CleanUp
            Err.Raise Err.number, Err.source & vbNewLine & vbTab & "StringHelper.StringFormat", "Could not create RegEx-Object"
        Case Else
            GoSub CleanUp
            Err.Raise Err.number, Err.source & vbNewLine & vbTab & "StringHelper.StringFormat", Err.description
    End Select
    GoSub CleanUp
    Exit Function

CleanUp:
    Set regEx = Nothing
    StringFormat = result
    Return

End Function

__________________

Benny Wunder
alias CptChaos

Es gibt 10 Arten von Menschen!
Die, die den Binärcode verstehen und die, die ihn nicht verstehen.
Bitte keine ungefragten PN´s oder Mails. Fragen und Lösungen gehören hier ins Forum, dann ist auch anderen geholfen!

| .NET-Komfort bei der Stringzusammensetzung in VBA | Formularformatierung und -validierung durch eine Klasse |
| Don Karl´s FAQ | DBWiki | Relationale DBs | Datenbanken bei ardiman.de | Access-Tutorial | AccEPT auf joposol.com |
| Erste Fehleranalyse mit Debug.Print |


Und noch was: Bei erledigten Themen, diese bitte auch mit dieser tollen Funktion als erledigt kennzeichnen.
CptChaos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.11.2015, 15:02   #2
CptChaos
Threadstarter Threadstarter
MOF Guru
MOF Guru
Standard

Update Version 1.2.0 (Danke an Josef Pötzl für den Hinweis)
Code:

Option Explicit

'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'===========================================================================================================================
' Module    : BW_StringHelper, © Benny Wunder (2014)
' Version   : 1.2.0
' Type      : Standard Module
' Author    : Benny Wunder, bw-services.net
'           : Inspired from SmartClasses which was showed on AEK14 by Michael Zimmermann
' Date      : 2014|05|15
' Purpose   : The module provides procedures and functions to get the comfort of a .NET-String in VBA
' Licence   : This example is free to use and adopt it in your own solutions without changing the author information in the
'           : moduleheader.
' Changelog : 1.0.0 | Initial release
'           : 1.1.0 | Limited parameterlist changed to ParamArray
'           : 1.2.0 | replaced regEx with VBA.Replace (thanks to Josef Pötzl for the hint...)
'===========================================================================================================================
'///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

'---------------------------------------------------------------------------------------------------------------------------
' Procedure : StringFormat
' Purpose   : Provides the .NET-StringFormat Method to build a complex string value.
'           : StringToFormat contains the string including the variables in curly brackets.
'           : Variables for replacing the placeholders will be set as an ParamArray
'---------------------------------------------------------------------------------------------------------------------------
' Example   : StringFormat("This is a {0} {1} string", "very", "simple") returns ->  "This is a very simple string".
'---------------------------------------------------------------------------------------------------------------------------
Public Function StringFormat(ByVal StringToFormat As String, ParamArray params() As Variant) As String
On Error GoTo Exit_StringFormat

Dim result As String
Dim i As Integer
Dim arrParams() As Variant

    If IsArray(params(0)) Then
        If UBound(params) = 0 Then arrParams = params(0)
    Else
        arrParams = params
    End If
	
    result = StringToFormat
    For i = 0 To UBound(arrParams)
        result = Replace(result,"{" & i & "}", CStr(arrParams(i)))
    Next i
    
Exit_StringFormat:
    Select Case Err.number
        Case 0
        Case Else
            GoSub CleanUp
            Err.Raise Err.number, Err.source & vbNewLine & vbTab & "StringHelper.StringFormat", Err.description
    End Select
    GoSub CleanUp
    Exit Function

CleanUp:
    StringFormat = result
    Return

End Function

__________________

Benny Wunder
alias CptChaos

Es gibt 10 Arten von Menschen!
Die, die den Binärcode verstehen und die, die ihn nicht verstehen.
Bitte keine ungefragten PN´s oder Mails. Fragen und Lösungen gehören hier ins Forum, dann ist auch anderen geholfen!

| .NET-Komfort bei der Stringzusammensetzung in VBA | Formularformatierung und -validierung durch eine Klasse |
| Don Karl´s FAQ | DBWiki | Relationale DBs | Datenbanken bei ardiman.de | Access-Tutorial | AccEPT auf joposol.com |
| Erste Fehleranalyse mit Debug.Print |


Und noch was: Bei erledigten Themen, diese bitte auch mit dieser tollen Funktion als erledigt kennzeichnen.

Geändert von CptChaos (03.11.2015 um 15:06 Uhr).
CptChaos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.