2 Anmerkungen:
Bei dem Array AutorenFeldNamen läufst du Gefahr, auf einen Fehler zu laufen, nämlich dann, wenn keine Autorenfelder vorhanden sind. Dann ist ubound = 0 und mit dem letzten Redim versuchst Du, es auf -1 zu setzen.
Besser wäre:
statt
AutorenFeldNamen ( Ubound (AutorenFeldNamen)) = feld.name
Redim Preserve AutorenFeldNamen ( Ubound (AutorenFeldNamen) +1)
If AutorenFeldNamen(0) = "" Then
AutorenFeldNamen(0) = feld.name
Else
Redim Preserve AutorenFeldNamen(Ubound(AutorenFeldNamen) + 1)
AutorenFeldNamen(Ubound(AutorenFeldNamen)) = feld.name
End If
Damit kann das spätere Redim um -1 weg.
Allerdings verwendest Du dieses Array anschließend gar nicht mehr, weshalb das alles überflüssig sein dürfte ;)
Bezüglich des verwendeten Arrays Autoren würde ich schreiben
Autoren = Fulltrim(ArrayUnique(ArrayAppend(Autoren, feld.values)))
Das verhindert, dass leere Werte bzw. Werte mehrfach auftauchen.
Die Abfrage bezüglich 'gefunden' dürfte auch scheitern, wenn nicht gefunden, dann ist das Ergebnis nämlich nicht 0 sondern Null, also statt
If gefunden > 0...
If Not IsNull(gefunden) Then...