Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Zeichen in String einfügen per Funktion
zurück: Füllfarbe ändern weiter: Einträge anhand einer frei definierbaren Liste sortieren Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Peter81
VBA: Fortgeschritten


Verfasst am:
25. Sep 2010, 15:55
Rufname: Peter

Zeichen in String einfügen per Funktion - Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo,

ich habe eine Frage, die so ähnlich schon mal angesprochen bzw. erklärt wurde. Nur ist mir die Antwort zu kompliziert (habe sie außerdem nicht nachvollziehen können) und für meinen Fall vielleicht auch nicht ganz passend.

Problem:
Ich habe die Zeichenfolge "M1-J1-K0-L_", die in der String-Variable PS gespeichert ist: PS = "M1-J1-K0-L_"

Nun möchte ich nach einem Beliebigen Buchstaben (z.B. K) und der ihm zugeordneten Nummer (bei K ist es die 0) die Zeichenfolge "-I0" einsetzen, sodass ich für PS erhalte: PS = "M1-J1-K0-I0-L_".

Ich will mir eine Funktion bauen, die das übernimmt und zwar unabhängig von den nach den Buchstaben stehenden Nummern. Das ganze sollte dann ungefähr so aussehen:
Code:

Public Function ZeichenErsetzen(ByVal EinfeugenAb As String, ByVal Einfuegen As String) As String

???????????????????????????????????

End Function


Am Beispiel "K" würde ich die Funktion aufrufen mit:
Code:

PS = ZeichenErsetzen("K","I")


Würde mich freuen, wenn mir jemand mit einer möglichst einfachen Lösung helfen kann Smile

Danke schon mal!
MissPh!
Office-VBA-Programmiererin


Verfasst am:
25. Sep 2010, 16:17
Rufname:
Wohnort: NRW


AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo,

wenn es sich stets um den hier gezeigten einheitlichen Aufbau des Strings handelt, so könnte es folgendermaßen gehen:
Code:
Public Function ZeichenEinfuegen(zString  As String, zalt As String, zneu As String) As String
    Dim i As Long
    i = Instr(zString, zalt)
    If i > 0 Then
        ' neues Zeichen einfügen
        ZeichenEinfuegen = Left(zString, i+2) & zneu & Mid(zString, i+1, 2) & Mid(zString, i+3)
    Else
        ' String unverändert zurückgeben
        ZeichenEinfuegen = zString
    End If
End Function

Aufruf:
Code:
PS = ZeichenEinfuegen(PS, "K", "I")
(ungetestet)
_________________
Gruß MissPh!
Peter81
VBA: Fortgeschritten


Verfasst am:
25. Sep 2010, 19:57
Rufname: Peter

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo MissPH!,

danke für deine schnelle und hilfreiche Antwort! Ich habe Sie ein wenig modifiziert. Die Nutzung der Funktionen Left und Right sind der Schlüssel zu der Sache.

Für alle Anderen, die das gleiche Problem haben, hier der geprüfte Code:

Code:

Public Function ZeichenEinfuegen(ByVal Text As String, ByVal SuchZeichen, ByVal EinfuegZeichen As String) As String

ZeichenEinfuegen = "" 'Zur Sicherheit auf leer setzten

    Dim I As Long
    I = InStr(1, Text, SuchZeichen) 'Stelle des Suchzeichens im Text

    Dim Teil1 As String
    Dim Teil2 As String
    Dim Teil3 As String
    Teil1 = Left(Text, I + 2)
    Teil2 = EinfuegZeichen & CStr(0) & "-"
    Teil3 = Right(Text, Len(Text) - (I + 2))

    ZeichenEinfuegen = Teil1 + Teil2 + Teil3

End Function


Beispiel:
Text = "M1-J1-N0-K0-L_"
TextNeu = ZeichenEinfuegen(Text,"K","I") = "M1-J1-N0-K0-I0-L_"

Problem gelöst!!
Danke!!!
MissPh!
Office-VBA-Programmiererin


Verfasst am:
25. Sep 2010, 20:47
Rufname:
Wohnort: NRW

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hi,
Zitat:
Ich habe Sie ein wenig modifiziert.
was hat dich denn davon abgehalten, meinen Vorschlag einzusetzen?

Und wie sieht es mit dieser Forderung aus?
Zitat:
Ich will mir eine Funktion bauen, die das übernimmt und zwar unabhängig von den nach den Buchstaben stehenden Nummern.
Hiermit wird stets die 0 eingefügt:
Code:
EinfuegZeichen & CStr(0) & "-"


Es wäre nett, wenn du einen Kommentar zum Testergebnis abgegeben könntest, ehe du einen Code-Vorschlag völlig umkrempelst.

_________________
Gruß MissPh!
Peter81
VBA: Fortgeschritten


Verfasst am:
25. Sep 2010, 23:09
Rufname: Peter


AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo,

Zitat:

was hat dich denn davon abgehalten, meinen Vorschlag einzusetzen?

Ich persönlich tue mich mit der Mid-Funktion ein bißchen schwer. Daher wollte ich sie nicht unbedingt zweimal verwenden. Außerdem ist es so, dass ich, wenn ich längere Zeit an einem Code nicht gearbeitet habe, Probleme habe wieder "rein zu kommen". Ich finde meine Version ein wenig intuitiver (Das Prinzip hier: Code in der Mitte auseinander brechen und zwischen linkem und rechtem Teil die Einfügung machen). Das macht es mir, wenn ich länger nicht mit dem Code gearbeitet habe, leichter wieder zu verstehen. Das ist aber Geschmackssache.

Zitat:

Hiermit wird stets die 0 eingefügt: [...]


Ich weiß, was du meinst, aber das ist ein Missverständnis. Mit meiner Äußerung "Unabhängig von der Nummer" wollte ich vermeiden, dass jemand den Vorschlag schreibt nach Buchstaben und Nummer zu suchen und danach die Einfügung zu machen. Da die Nummer aber variabel ist, würde das Probleme bereiten.
Hinter das I kann ich außerdem deshalb eine 0 schreiben, weil das I für einen bestimmten Vorgang (eine bestimmte Eintragung in einer Tabelle) steht. Ist dieser Vorgang beendet heißt es "I1". Ist er offen, heißt es "I0". Da ich in die Zeichenfolge "M1-J1-K0-L_" insgesamt vor Beginn des Vorgangs I einfüge, ist der Vorgang noch nicht ausgeführt. Daher I0.
Ich habe diesen Gesamtzusammenhang in meiner Ausgangsfrage nicht erklärt, weil ich es für unerheblich und verkomplizierend hielt.

Zitat:

Es wäre nett, wenn du einen Kommentar zum Testergebnis abgegeben könntest, ehe du einen Code-Vorschlag völlig umkrempelst.


Das ist nicht böse gemeint, aber um das vorherige Testen des Codes könnte ich dich genauso bitten, bevor ich meine Anfangsarbeit herausnehme und deinen Vorschlag, was die Variablen angeht, in meinen Gesamtcode einpasse (was ja auch ein wenig Arbeit ist) nur um danach ggf. sowieso etwas anzupassen, weil wohlmöglich ein Fehler darin ist oder mir das aus meiner Sicht nicht intuitiv genug erscheint (s.o.).
Aber auch ohne Test war dein Code hilfreich und das Prinzip habe ich ja übernommen. Ich habe es nur in meiner "Programmierweise" angepasst.

Gruß
Peter81
Kuwe
Excel-Anwender mit VBA


Verfasst am:
26. Sep 2010, 00:27
Rufname: Uwe

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo Peter,

hier noch eine Version mit Ersetzen:

Code:
Public Function ZeichenEinfuegen(ByVal Text As String, ByVal SuchZeichen, ByVal EinfuegZeichen As String) As String
  ZeichenEinfuegen = Application.WorksheetFunction.Replace(Text, InStr(1, Text, SuchZeichen) + 3, 0, EinfuegZeichen & "0-")
End Function

_________________
Gruß Uwe
Peter81
VBA: Fortgeschritten


Verfasst am:
26. Sep 2010, 09:35
Rufname: Peter

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo Uwe,

danke für deine Antwort! Mit der Replace-Funktion habe ich ganz zu beginn auch rumgebastelt. Ich habe sie genauso eingesetzt, wie du, also auch mit InStr(...) usw. nur da war das Problem, dass er dann beim Ersetzen alles bis zum Zuersetzenden Buchstaben weggenommen bzw. durch z.B. "I0-" ersetzt hat, sodass ich am Ende nur "I0-L_" hatte.
Vielleicht kannst du mir ja sagen wieso bzw. was ich falsch gemacht habe.

Gruß
Peter
Kuwe
Excel-Anwender mit VBA


Verfasst am:
26. Sep 2010, 11:08
Rufname: Uwe

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo Peter,

der 3. Parameter steht ja für "Anzahl_Zeichen".

"Anzahl_Zeichen gibt an, wie viele der zu Alter_Text gehörenden Zeichen Sie durch Neuer_Text ersetzen möchten."

Da nichts ersetzt sondern nur eingefügt werden soll, steht da also eine Null.

Aber ich sehe gerade, dass das wohl nicht Deine Frage war. Confused

_________________
Gruß Uwe
Phelan XLPH
Fortgeschritten


Verfasst am:
26. Sep 2010, 11:34
Rufname: Phelan

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Habs erweitert, bei Nichtfindung Leer- bzw. Fehlerwert-Ausgabe:

Code:
Public Function ZeichenEinfuegen(ByVal Text As String, ByVal SuchZeichen As String, Optional ByVal EinfuegZeichen As String = "") As String
  If InStr(1, Text, SuchZeichen) = 0 Or SuchZeichen = "" Then
    ZeichenEinfuegen = "" 'CVErr(2036)
  Else
    ZeichenEinfuegen = Application.Replace(Text, InStr(1, Text, SuchZeichen) + 3, 0, EinfuegZeichen & "0-")
  End If
End Function

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Peter81
VBA: Fortgeschritten


Verfasst am:
26. Sep 2010, 14:11
Rufname: Peter

AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Hallo,

An Uwe:
ich habe eben erst gemerkt, dass sich die "Worksheet-Replace-Funktion" ja von der VBA Replace-Funktion unterscheidet. Damit geht es dann auch.

An Glücksritter:
Für was genau steht bei dir im Code "CVErr(2036)" ?

_________________
Grüße
Peter
Phelan XLPH
Fortgeschritten


Verfasst am:
26. Sep 2010, 14:43
Rufname: Phelan


AW: Zeichen in String einfügen per Funktion - AW: Zeichen in String einfügen per Funktion

Nach oben
       Version: Office 2007

Ausgabe des Fehlerwertes "#Wert"
_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Funktion zum autom. Einblenden einer Gruppierung? 2 original-m 819 28. Feb 2005, 19:11
original-m Funktion zum autom. Einblenden einer Gruppierung?
Keine neuen Beiträge Excel Formeln: Zeile einfügen mit Formel oder Makro? 2 original-m 2246 21. Feb 2005, 08:09
original-m Zeile einfügen mit Formel oder Makro?
Keine neuen Beiträge Excel Formeln: einfügen 5 traum1954 817 18. Feb 2005, 23:38
traum1954 einfügen
Keine neuen Beiträge Excel Formeln: Funktion in Textfeld? 4 Andre1977 2347 16. Feb 2005, 08:47
Kuwe Funktion in Textfeld?
Keine neuen Beiträge Excel Formeln: Zeilen per Formel ein- und ausblenden 2 Gotha 1548 30. Dez 2004, 10:28
Gotha Zeilen per Formel ein- und ausblenden
Keine neuen Beiträge Excel Formeln: Verknüpfung mit ATPVBAEN.XLA / Eomonth Funktion 3 loisl04 5161 11. Dez 2004, 08:29
Thomas Ramel Verknüpfung mit ATPVBAEN.XLA / Eomonth Funktion
Keine neuen Beiträge Excel Formeln: fortlaufende zahl in spalte - funktion? 2 lifius 1741 10. Dez 2004, 19:45
lifius fortlaufende zahl in spalte - funktion?
Keine neuen Beiträge Excel Formeln: wenn dann funktion klappt nicht 9 ReneZ. 1344 20. Okt 2004, 21:34
ReneZ. wenn dann funktion klappt nicht
Keine neuen Beiträge Excel Formeln: WENN(ODER)-Funktion... 2 Karin K. 733 13. Okt 2004, 15:51
Arnim WENN(ODER)-Funktion...
Keine neuen Beiträge Excel Formeln: Namen mit HLOOKUP (VERWEIS) in ein anderes Sheet einfügen 2 Aloha 917 03. Okt 2004, 08:08
Aloha Namen mit HLOOKUP (VERWEIS) in ein anderes Sheet einfügen
Keine neuen Beiträge Excel Formeln: Hyperlink per VBA kopieren 1 Gast 1118 03. Aug 2004, 16:57
ae Hyperlink per VBA kopieren
Keine neuen Beiträge Excel Formeln: Wenn Funktion 1 SF 402 02. Aug 2004, 16:27
icke Wenn Funktion
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Dreamweaver Forum