wo die Blumentöpfe...
25.02.2022 18:53:34
Yal
...abgelegt werden, kannst Du selber bsstimmen.
Das Makro überträgt nur Inhalte. Wenn deine Spalte D als zentiert formatiert ist, dann bleibt sie zentriert.
Deine letzte Anforderung erreichst Du mit Sortierung. Es wäre dann sinnvoll, dass jede Zeile alle 3 Info haben:
_ gesuchten Begriff
_ gefundene Text, inkl. Link
_ enthaltende Festplatte
_ so wäre die Sortierung am einfachste
Ich glaube, ich werde dieses Coding einrahmen.
Sub Suchen_starten()
Dim AC As Range, X As Range, i
Dim W As Worksheet
Dim rFind As Range
Dim Lo As ListObject
Dim firstAddress As String
With Worksheets("Suchordner")
Application.ScreenUpdating = False
Set Lo = ListObject_HerstellenLeeren(.Cells.Worksheet)
.Range("A21") = 0 'Dummy-Eintrag bei leerem ListObject
For Each AC In .Range("C8").CurrentRegion.Columns(2).Cells
For Each W In Worksheets
If W.Name "Suchordner" Then
Set rFind = W.Cells.Find(What:=AC, After:=[a1], LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
firstAddress = rFind.Address
Do
If InStrRev(rFind, ".") > 0 Then
Select Case LCase(Mid(rFind, InStrRev(rFind, "."))) 'Dateiendung (nach dem letzten Punkt, in Kleinschrift)
Case ".dvr-ms", ".mpg", ".mp4", ".ts", ".ts.ap", ".ts.sc", ".vob", ".tv" 'nur Video Formate
With .Range("A20").End(xlDown)
.Offset(1, 0) = .Value + 1
.Offset(1, 1) = AC.Offset(0, -1).Value
.Offset(1, 2) = AC.Value
ActiveSheet.Hyperlinks.Add Anchor:=.Offset(1, 3), Address:="", _
SubAddress:="'" & rFind.Worksheet.Name & "'!" & rFind.Address, _
TextToDisplay:=rFind.Value
.Offset(1, 4) = "'" & rFind.Worksheet.Name & "'!" & rFind.Address(0, 0)
End With
End Select
End If
Set rFind = W.Cells.FindNext(rFind) 'Nächstes Finden
Loop While rFind.Address firstAddress
End If
End If
Next W
Next AC
End With
Lo.ListRows(1).Delete 'Dummy-Zeile löschen
With Lo.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.SortFields.Clear
.SortFields.Add Key:=Lo.ListColumns("Nr").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SortFields.Add Key:=Lo.ListColumns("Treffer").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.Apply
End With
Application.ScreenUpdating = True
MsgBox "fertig"
End Sub
Private Function ListObject_HerstellenLeeren(W As Worksheet) As ListObject
Dim Lo As ListObject, i
On Error Resume Next
With W
Set Lo = W.ListObjects(1)
If Lo Is Nothing Then
W.Range("A20:E20") = Array("Idx", "Nr", "Begriff", "Treffer", "Position")
W.ListObjects.Add(xlSrcRange, Range("A20:E20"), , xlYes).Name = "ErgebnisListe"
Else
For i = 1 To Lo.ListRows.Count: Lo.ListRows(1).Delete: Next
End If
End With
Set ListObject_HerstellenLeeren = Lo
End Function
VG
Yal