AW: Wörter in Textfeldern per Makro suchen
29.04.2020 15:17:08
Daniel
Hi
wenn du Lucs Funktion probieren willst, gehe so vor, um das in deinen Code einzubauen.
1. kopiere dir den Code der Funktion TextOf aus dem Beitrag, den er verlinkt hat und füge ihn in ein allgemeines Modul ein.
das VLike brauchst du erstmal nicht (eventuell später)
2. verwende jetzt diese Funktion so in deinem Code:
ersetze das Shpe.DrawingObject.Caption durch TextOf(Shpe.Name, 1) und probiere damit deinen Code und natürlich auch, ob so die erforderliche Zeichenlänge übergeben wird.
ob das normale Like in deiner Excelversion die mehr als 256 Zeichen verarbeiten kann, kannst du leicht so testen:
gib im Direktfenster den Befehl ein:
?(String(300, "x") & "axxx") like "*a*
ist das Ergebnis WAHR dann kannst du deinen bisherigen Code mit LIKE verwenden
ist es FALSCH, dann teste:
?Instr(String(300, "x") & "axxx", "a")
hier sollte das Ergebnis 301 sein, dann kannst du INSTR verwenden.
sollte auch hier das Ergebnis 0 sein, müsste man die Funktion VLIKE von Luc auch noch übernehmen
damit dein Code einfacher wird, solltest du den Text aus den Textfeldern in eine Variable übernehmen:
Sub Suchen_alle_Tabellen()
Dim wks As Worksheet
Dim Shpe As Shape
Dim strFind As String
Dim strText As String
strFind = InputBox("Bitte Suchbegriff eingeben:", Application.UserName, strSuch)
If strFind = "" Then Exit Sub
For Each wks In Worksheets
For Each Shpe In wks.Shapes
If Shpe.Type = msoTextBox Then
strText = TextOf(Shpe.Name, 1)
MsgBox Len(strText) 'optional zum Testen
If strText & "," Like "*" & strFind & ",*" Or _
strText & "," Like "*" & strFind & Chr(10) & "*" Then
MsgBox "Suchtext gefunden in: " & Shpe.Name & " " & wks.Name
End If
End If
Next
Next wks
strSuch = strFind
MsgBox "Keine weiteren Fundstellen!", False, Application.UserName
End Sub