vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Verständnisproblem zur "Replace"-Funktion 
Autor: Hollie
Datum: 23.01.24 08:22

Hallo und guten Tag in die Runde.

Ich habe ein Verständnisproblem zur "Replace"-Funktion, speziell zu den Parametern
"starten" und "Anzahl".
Die Hilfe sagt
"Replace(Ausdruck, suchen, ersetzendurch[, starten[, Anzahl[, vergleichen]]])"

In meiner Textbox trage ich die Zeichenfolge "1717" ein und wähle die zweite "17" aus,
um diese durch "" (nichts) zu ersetzen, sodass die erste "17" erhalten bleiben soll.
Mit "Me.Text1.Text = Replace(STRG, TMP0, "", A1, 1)" will ich das ausführen, aber Fehler.
["A1 = 3" nach meinem Verständnis ab Position 3 des Strings "1717" "starten"]
["1" nach meinem Verständnis String nur einmal durchsuchen "Anzahl"]
Leider verschwindet alles, die Textbox wird geleert.
(Ebenso fehlerhaftes Ergebnis, wenn ich "71" im String "1717" auswähle.)
Was mache oder verstehe ich falsch ???

(Habe das Projekt mal minimiert beigefügt; ggf. zum Nachvollziehen den Programmcode
in ein neues Projekt einfügen und ausprobieren.
HINWEIS: in meinem Originalprojekt ist das normale Kontextmenü von "Text1" unterdrückt,
hier im minimalisierten Testprogramm nicht.)

Vielen Dank für Eure Hilfe, Grüße HolgeN
 
 
Public WithEvents Text1 As TextBox
Public WithEvents lblSTB As Label
Public WithEvents Button As CommandButton
Private STRG$, TMP0$, A1%, A2%
 
Private Sub Form_Load()
    Me.Width = 4900: Me.Height = 2600: Me.FontName = "Arial"
    Set Text1 = Me.Controls.Add("VB.TextBox", "Text1"): Me.Text1.TabStop = False
    With Text1
        .Width = 855: .Height = 465: .FontName = "Arial": .FontSize = 16: .Left _
          = 480: .Top = 600: .MaxLength = 4: .TabStop = True: .Visible = True
    End With
    Set Button = Me.Controls.Add("VB.CommandButton", "Button"): _
      Me.Button.TabStop = False
    With Button
        .Width = 2000: .Height = 525: .FontName = "Arial": .FontSize = 10: _
          .Left = 2040: .Top = 600: .Caption = "Ausschneiden": .TabStop = True: _
          .Visible = True
    End With
    Set lblSTB = Me.Controls.Add("VB.Label", "lblSTB")
    With lblSTB
        .Height = 315: .Width = Me.Width: .Top = 1680: .FontName = "Arial": _
          .FontSize = 8: .BorderStyle = 1: .Visible = True
    End With
End Sub
 
Private Sub Button_Click()
 
    Me.lblSTB.Caption = ""
 
    A1 = Me.Text1.SelStart + 1 ' "+ 1", sonst LfzF 5
    A2 = Me.Text1.SelLength    'Länge des markierten Textes
    If A2 = 0 Then Me.lblSTB.Caption = " nichts ausgewählt": Exit Sub
 
    STRG = Me.Text1.Text
    TMP0 = Mid(Me.Text1.Text, A1, A2)
    Me.lblSTB.Caption = " Text """ & STRG & """, Auswahl """ & TMP0 & """ " & _
      ", suchen in Text1 ab Pos. """ & A1 & """"
 
    'F1: Replace(Ausdruck, suchen, ersetzendurch[, starten[, Anzahl[, 
    ' vergleichen]]])
    'Hier also würde ich denken, dass "A1" die Startposition für das Suchen 
    ' angibt (ab 3. Zeichen in "Text1")
    'und das Argument "1" das Ersetzen auf "nur einmal" beschränkt. Aber geht 
    ' nicht:
 
    Me.Text1.Text = Replace(STRG, TMP0, "", A1, 1)
 
'Wie also kann man so ersetzen, dass
'- egal, wie viele Zeichen an irgendeiner Position ausgewählt sind -
'das Ergebnis korrekt ist ???
'(Über das normale Kontextmenü der Textbox funktioniert es korrekt.)
 
''Dieser "Umweg" würde funktionieren:
''    Dim X%, TMP2$
''    For X = 1 To Len(Me.Text1.Text)
''        If X < A1 Or X > (A1 + A2) - 1 Then TMP2 = TMP2 & Mid(STRG, X, 1)
''    Next X
''    Me.Text1.Text = TMP2: TMP2 = ""
 
    A1 = 0: A2 = 0: STRG = "": TMP0 = ""
    If Len(Me.Text1.Text) > 0 Then Me.Text1.SelStart = Len(Me.Text1.Text): _
      Me.Text1.SetFocus
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Verständnisproblem zur "Replace"-Funktion227Hollie23.01.24 08:22
Re: Verständnisproblem zur "Replace"-Funktion116Manfred X23.01.24 09:00
Re: Verständnisproblem zur "Replace"-Funktion105Hollie24.01.24 08:20
Re: Verständnisproblem zur "Replace"-Funktion114Kuno6023.01.24 16:17
Re: Verständnisproblem zur "Replace"-Funktion111Hollie24.01.24 08:21

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel