Da Du das Script veröffentlicht hast und selbst schreibst, dass dort Optimierungsbedarf enthalten sein könnte, möchte ich (ungefragt) ein bißchen daran herummäkeln. Ein Thema, auf das Du vielleicht etwas mehr achtgeben solltest, ist Bedingungslogik. Ein Beispiel:
If doc.FieldGetText("GNummer") <>"" Then
Goto WithGroup
End If
If doc.FieldGetText("GNummer") ="" And doc.FieldGetText("LGNummer") <>"" Then
Den roten Text kannst Du weglassen, denn die Bedingung hast Du direkt darüber schon einmal abgefragt. In WithGroup fragst Du es dann noch mal ab.
Ein anderes Beispiel:
If dummy = 0 Then
Continue = False
Call doc.FieldSetText("SaveControlle","")
Exit Sub
Elseif dummy = 1 Then
Continue = True
Else
Continue = False
Call doc.FieldSetText("SaveControlle","")
Exit Sub
End If
Die beiden blauen Befehlsfolgen sind identisch, also würde ich sie auch nur einmal schreiben. Bei späteren Erweiterungen ist die Gefahr groß, nur eine zu ändern, also Thema Wartbarkeit.
Wenn Du es so schreibst, passiert das gleiche, es ist aber übersichtlicher, lesbarer und wartungsfreundlicher, wobei der Else-Part nicht nötig ist, denn Continue ist True
If dummy <> 1 Then
Continue = False
Call doc.FieldSetText("SaveControlle","")
Exit Sub
Else
Continue = True
End If