| |
Visual-Basic EinsteigerZeichenfolge 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? | |
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. | |
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
| |
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 | |
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? | |
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 | |
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. | |
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 | |
| 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 |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|