vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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
Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: FrankAs
Datum: 18.08.17 07:15

Ich möchte eine Zelle (Spalte D) nach einer ganz bestimmten Zeichenfolge durchsuchen,
und wenn die Zeichenfolge gefunden wurde, den Rest der Zelle (alles nach dieser
Zeichenfolge) in Zelle Spalte E kopieren.

Beispiel:

Ich suche nach der Zeichenfolge "\fs"

Zelle D hat folgenden Inhalt:

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}}\viewkind4\uc1\pard\lang1031\f0\fs18 - polieren\par\par}

Bei erfolgreicher Suche (hier z.B. Zeichenfolge in Stelle 87 gefunden) möchte ich den Rest der Zelle
(Position + 6 / hier also ab Stelle 93) in Spalte E kopieren.

Wie kann ich das umsetzen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: minimalist
Datum: 18.08.17 08:33

Als erstes finde den index an dem der substring fs started und halte den in memory.
str1 = original string
strTofind= fs
halte den index im Label1:

Label1.Text = str1.IndexOf(strToFind, 2)

dann remove den tei des originalen stringes den du nicht brauchst:

TextBox2.Text = str1.Remove(0, CInt(Label1.Text))
das gibt dir den teil den du verwenden möchtest.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: FrankAs
Datum: 18.08.17 09:29

Hallo minimalist,

ich danke für Deine fixe Antwort. Damit komme ich sicher klar. Perfekt

LG

Frank

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: FrankAs
Datum: 18.08.17 11:21

Hallo nochmal,

habe nun doch Probleme bei der Umsetzung des Codes.
Vorab: Ich bin Neuling, was VBA betrifft, deshalb wäre jede zusätzliche Erläuterung sicher hilfreich.

Ich möchte den Zellinhalt Spalte D nach Zeichenfolge "\fs" durchsuchen, und, wenn gefunden, den
danach folgenden Zellinhalt in Spalte E kopieren.

Klar ist mir schonmal, dass ich str1 falsch deklariert habe, aber wie ist es denn korrekt?
Und: Was muss ich ebenfalls noch deklarieren?

Hier der von mir aktuell hinterlegte Code. Dieser verursacht eine Meldung:

"Fehler beim Kompilieren:
Ungültiger Bezeichner."

Ich wäre sehr dankbar, könnte mir hier jemand unter die Arme greifen.

Sub removertf()
'
' removertf Makro
 
    Dim AnzahlZeilen As Long
    Dim Zeile As Long
    Dim str1 As String
    Dim strToFind As String
 
    AnzahlZeilen = ActiveSheet.UsedRange.Rows.Count
 
        For Zeile = 1 To AnzahlZeilen
 
            str1 = Cells(Zeile, 4).Value
            strToFind = "\fs"
            label1.Text = str1.IndexOf(strToFind, 2)
            TextBox2.Text = str1.Remove(0, CInt(label1.Text))
            Cells(Zeile, 5) = TextBox2.Text
 
        Next Zeile
 
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: minimalist
Datum: 18.08.17 13:15

Sorry mein code arbeitet in vb.net. War noch etwas früh. So du brauchst code für vba in Excel?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: minimalist
Datum: 18.08.17 14:14

OK dieser code hilft dann vielleicht:
1) Hier habe ich mir einen button eingefügt
Private Sub CommandButton1_Click()
Dim i As Long
Dim str As String
Dim pos As Integer
Dim resultstring As String

' cycle durch alle cellen in erster column

For i = 1 To Rows.Count
If Not IsEmpty(Cells(i, 1).Value) Then
str = Cells(i, 1).Value 'finde value
If Len(str) > 10 Then 'bedingung das der value eine gewisse länge hat, nur testing hier
pos = InStrRev(str, "\fs") 'finde den index des substrings("\fs"
resultstring = Right(str, Len(str) - pos + 1) ' benutze den reststring
Cells(2, 2).Value = resultstring 'in cell(2,2) copieren testing o.k.
End If
End If
Next i
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: Blackbox
Datum: 18.08.17 20:07

Hallo,

die Fragestellung ist kritisch. VBA scannt eine Zelle schon nach den Zeichen, aber man muss sicherstellen, dass diese Zeichen tatsächlich die Suchkriteriien sind und nicht sonst enthalten sein könen.

Beispiel:

Suchkriterium = "TH"

if suchstring Like "TH*" Then ...

Werte sind:
"Ein schönes Lied" -> Nö!
"What this?" -> Bingo! wird erkannt
"Das ist der Suchstring TH..." -> Bingo! wird erkannt

Du suchst aber die 3. Zeile. Sowas löst man mit regulären Ausdrücken.
Also Tipp: Lese Dich in reguläre Ausdrücke ein.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeichenfolge in Zelle suchen, wenn gefunden: ab Stelle x in andere Spalte 
Autor: effeff
Datum: 18.08.17 21:16

Z. B. so (Trage bei wb.Sheets Deinen gewünschten Tabellennamen ein):

Sub FindString()
 
Dim wb As Workbook
Set wb = ActiveWorkbook
 
Dim ws As Worksheet
Set ws = wb.Sheets("Tabelle1")
 
Dim rg As Range
Set rg = ws.Range("D:D")
 
Dim Suchwert As String
Suchwert = "\fs"
 
Dim GefZelle As Object
Set GefZelle = rg.Find(What:=Suchwert)
 
Dim firstAddress As String
Dim strZellinhalt As String
 
With rg
    Set GefZelle = .Find(Suchwert)
    If Not GefZelle Is Nothing Then
    firstAddress = GefZelle.Address
        Do
                zellinhalt = Cells(GefZelle.Row, GefZelle.Column).Value
        Dim strErgebnis As String
        strErgebnis = BereinigeString(zellinhalt, Suchwert)
        Cells(GefZelle.Row, 5).Value = strErgebnis
            Set GefZelle = .FindNext(GefZelle)
            If GefZelle Is Nothing Then
                GoTo DoneFinding
            End If
            Loop While Not GefZelle Is Nothing And GefZelle.Address <> _
              firstAddress
    End If
DoneFinding:
MsgBox ("Die Suche ist beendet!")
End With
 
End Sub
 
Function BereinigeString(ByVal strText As String, ByVal Suchwert As String) As _
  String
 
Dim i As Integer
i = InStr(strText, Suchwert)
 
Dim retVal As String
retVal = Right(strText, Len(strText) - 93)
 
Dim j As Integer
j = InStr(retVal, "\par")
 
retVal = Left(retVal, j - 1)
 
BereinigeString = Trim(retVal)
 
End Function

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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