Naja, optimieren musst du das Ding schon selbst
Aber ein, zwei Tipps kann ich dir geben:
Du hast mehrere Funktionsblöcke, die bis auf ein Paar Variablen völlig identisch sind. Solche Blöcke kannst du z.B. in eine eigene Methode auslagern, sodass du nur diese aufrufst und die entsprechenden Variablen einfach als Parameter übergibst.
Dann benutzt du einen unnötigen With-Block. Zumindest, soweit ich das gesehen hab. Du benutzt nur einmal ein .Find, ansonsten nichts in der Richtung. Prüfe dies.
Letztendlich kommentierst du zu ausgiebig. Naja okay, ist geschmackssache, aber zu viele Kommentare blähen den Code auf und machen das Gegenteil von dem, was sie eigentlich sollen: Übersicht und Klarheit verschaffen. Ein Beispiel: Da, wo du die Hintergrundfarbe festlegst. Die beiden Zeilen sind sich ziemlich ähnlich und können zusammen gefasst werden. Im Prinzip interessiert auch nicht wirklich, wo genau du jetzt was machst, sondern nur was du machst und das wo steht dann im Code.
Aber diese Zeilen hast du eh komplett auskommentiert, also kannst du sie auch raushauen, insofern sie wirklich nicht mehr benötigt werden.