Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Import einer Userform - zusätzliche Leerzeile wird eingefügt

Import einer Userform - zusätzliche Leerzeile wird eingefügt
30.11.2023 17:31:09
Joschi Witchcraft
Hallo Forum,

mir ist aufgefallen, dass beim Import einer Userform beim Makrocode zwischen dem Header (Beginn / End und Attribute) und den eigentlichen - auch unter VBA sichtbaren - Makroteilen immer eine zusätzliche Leerzeile eingefügt wird.

Ausschnitt nach dem Export:
Attribute VB_Exposed = False
'1
'2
Option Explicit

Private Sub TTT()

Wenn ich den exportieren Code erneut importiere, sieht der eigentliche Makroteill nun so aus:

== hier wurde die Leerzeile eingefügt
'1
'2
Option Explicit

Private Sub TTT()

Vor meinen mit '1 und '2 markierten Zeilen wurde eine neue Zeile eingefügt.
Wird dieser Stand exportiert, und dabei die alte Vesion ersetzt, so wird beim nächsten Import eine weitere Leerzeile eingefügt.

Das Problem besteht nur bei "Formularen" und nicht bei "normalen" Code-Moduln (.cls und .bas).

Grundsätzlich stört eine Leerzeile nicht. Allerdings habe ich mir ein Tool erstellt, welches die einzelnen Moduln aller ausgewählten Mappen exportiert. Dann kann ich vergleichen, ob in den so exportierten Moduln solche vorhanden sind, welche von der Version in meinem Import-Verzeichnis abweichen. Dazu ermittle ich von beiden den MD5-Wert. Und der ist durch die zusätzliche Leerzeile anders. Mit einem weiteren Werkzeug kann ich dann in den jeweiligen Mappen das entsprechende Modul löschen und durch das neue (aus dem Import-Verzeichnis) ersetzen ("Import"). Doch dabei wird wieder die erwähnte Leerzeile eingefügt.

Workbooks(UpdateBook).VBProject.VBComponents.Remove _
Workbooks(UpdateBook).VBProject.VBComponents(Names(Loop1))
Workbooks(UpdateBook).VBProject.VBComponents.Import InclPfad & Names(Loop1) & ModType

Dass Microsoft diesen Fehler korrigiert, halte ich im Rahmen der endlosen Diskussion um den Wegfall von VBA für aussichtsslos. Bleibt also nur eine Lösung über einen eigenen VBA-Code.

Ich habe zwar eine Idee, mir fehlt aber der Lösungsansatz.

Immer dann, wenn ein ".frm"-Modul (Modtype = ".frm") importiert wurde, sollte per Code überprüft werden, ob vor der von mir (fast) immer verwendeten "Option Explicit" eine Leerzeile vorhanden ist, und dann diese löschen.

Ist mir noch zu helfen?

Gruß Joschi

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import einer Userform - zusätzliche Leerzeile wird eingefügt
01.12.2023 11:45:11
Joschi Witchcraft
Hallo Thorsten.

Danke für Deine Antwort mit dem Link zu einem anderen Beitrag. Dort habe ich allerdings keine Lösung für mein Problem gefunden, aber Anregungen, in Google nach weiteren Begriffen zu suchen.

Inzwischen habe ich mein Problem gelöst. Hier mein Code:

Option Explicit

Sub UF_remove_First_Line()
Debug.Print Remove_line1_in_UF_if_empty("UFKillTest")
End Sub

Function Remove_line1_in_UF_if_empty(ByVal UFName As String) As Boolean
Dim Component As Object
For Each Component In Application.VBE.ActiveVBProject.VBComponents
With Component.Codemodule
Debug.Print UFName & " " & .Name
If .Name = UFName Then
ReTry: Debug.Print .CountOfDeclarationLines & " " & .Lines(1, 1)
If .Lines(1, 1) = vbNullString Then
.Deletelines 1, 1
Remove_line1_in_UF_if_empty = True
GoTo ReTry
End If
If Remove_line1_in_UF_if_empty = True Then Exit For
End If
End With
Next Component
End Function

Gruß Joschi
Anzeige
AW: Import einer Userform - zusätzliche Leerzeile wird eingefügt
02.12.2023 09:29:19
Joschi Witchcraft
Hallo Forum.

Ich muss das Thema nochmals aufgreifen.

Meine dargestellte Lösung funktioniert nur, wenn die "Reparatur" von "innen" kommt. Auch der genannte Austausch eines Moduls findet "von außen" statt.

Wie müsste ich meinen Code anpassen, um die Änderung an einer (bereits durch den Austausch geöffneten) Mappe vorzunehmen?

Gruß Joschi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige