Hallöchen,
das ist ja schon relativ dicht programmiert.
Mal so auf den ersten Blick ein paar Hinweise.
Auf jeden Fall würde ich erst mal oben Option Explicit schreiben. Eventuelle Schreibfehler bei Variablen findest DU so schneller ...
**********************************
Einige Select kannst Du Dir sparen, nutze z.B. für die Anzeige weiterer Bereiche definierte Ansichten, z.B. die Makroliste …
Oder hierbei, wenn Du den Bereich an das Sub übergibst, also statt:
Range(Cells(Z, 30), Cells(Z + 2, 56)).Select
Call Uebergabe 'Aufruf der Sub Uebergabe (Gefundene Zahl nach links ?bertragen)
dann
Uebergabe Range(Cells(Z, 30), Cells(Z + 2, 56))
und im Sub dann
Sub Uebergabe(byref rngChange as range)
…
For For Each C In rngChange
..
**********************************
Bei den If's kannst Du auch Else nutzten, z.B. statt
If ?berschrift <> "" Then Range("C1") = ?berschrift
If ?berschrift = "" Then Range("C1") = "Zeile " & (ActiveSheet.Cells(Rows.Count, 300).End(xlUp).Row) + 1
dann z.B.
If ?berschrift <> "" Then Range("C1") = ?berschrift Else Range("C1") = "Zeile " & (ActiveSheet.Cells(Rows.Count, 300).End(xlUp).Row) + 1
Oder in mehreren Zeilen
If … Then
Else
End IF
--> so was ist für mich übrigens auch ein Grund, auf die deutschen Umlaute zumindest bei Codes zu verzichten
**********************************
Du kannst auch If's schachteln und dadurch auf Sprünge verzichten,
also statt
If Range("C1") <> "" Then GoTo ab_in_Biblio
dann
Code:
If Range("C1") = "" Then
If … Then
End If
End If
**********************************
Schleifen sind auch nicht immer nötig und manche Sachen bringt VBA auch ohne WSFunction, z.B.
Code:
For Each zelle In Range("A2", "AB28") 'ggf. vorhandene Leerzeichen l?schen
zelle.Value = WorksheetFunction.Trim(zelle.Value)
Next zelle
Hier reicht ggf.
Range("B8:AB28").Replace What:=" ", Replacement:=""
…
---> Range("A2", "AB28") das hab ich dabei auch gleich mal geändert...
**********************************
Die Funktion hab ich mir jetzt noch nicht angescheut
bin nicht so der SoDoku-Fan oder anders gesagt - hab ich noch nie gemacht