Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
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

Kopieren und einfügen von VBA code per VBA

Kopieren und einfügen von VBA code per VBA
14.12.2016 09:42:07
VBA
Hallo zusammen,
ich habe folgende routine geschrieben:
Dim CodeLines() As String, size As Integer
Sub test()
GetVBACode("inputsheet")
SetVBACode("outputsheet")
End Sub
Public Function GetVBACode(NameInputCodeModule As String)
Dim i As Integer
With ThisWorkbook.VBProject.VBComponents(Worksheets(NameInputCodeModule).CodeName).CodeModule
size = .CountOfLines
ReDim CodeLines(size)
For i = 1 To size
CodeLines(i) = .Lines(i, 1)
Next i
End With
End Function

Public Function SetVBACode(NameOutputCodeModule As String)
Dim i As Integer
With ThisWorkbook.VBProject.VBComponents(Worksheets(NameOutputCodeModule).CodeName).CodeModule
For i = 1 To size
.InsertLines i, CodeLines(i)
Next i
End With
End Function

Im Debugmodus funktioniert auch alles prima. Wenn ich allerdings das Makro ohne Debugger ausführen lassen, bekomme ich eine -> Runtime Error 9 - Subscript out of range Ist an meinem VBA code etwas fehlerhaft bzw. funktioniert dies überhaupt so?
Viele Grüsse

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren und einfügen von VBA code per VBA
14.12.2016 10:36:36
VBA
Hallo,
ich würde es evtl. so versuchen.
Sub test()
Dim InsertString As String

InsertString = GetVBACode("inputsheet")

Call SetVBACode("outputsheet", InsertString)

End Sub

Public Function GetVBACode(NameInputCodeModule As String)
With ThisWorkbook.VBProject.VBComponents(Worksheets(NameInputCodeModule).CodeName).CodeModule
If .CountOfLines > 0 Then
GetVBACode = .Lines(1, .CountOfLines)
End If
End With
End Function

Public Sub SetVBACode(NameOutputCodeModule As String, InsertString As String)
With ThisWorkbook.VBProject.VBComponents(Worksheets(NameOutputCodeModule).CodeName).CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
If InsertString <> "" Then
.CodePane.CodeModule.AddFromString InsertString
End If
End With
End Sub
Gruß Tino
Anzeige
AW: Kopieren und einfügen von VBA code per VBA
14.12.2016 11:24:17
VBA
Hi Tino,
vielen Dank für Deine Rückmeldung.
Warum hast du SetVBACode in ein Sub ausgelagert?
Viele Grüsse
AW: Kopieren und einfügen von VBA code per VBA
14.12.2016 11:44:44
VBA
Hallo,
weil ich von dieser keine Rückgabe bekomme, daher brauche ich keine Function.
Gruß Tino
AW: Kopieren und einfügen von VBA code per VBA
14.12.2016 12:51:39
VBA
Vielen Dank für deine Rückmeldung.
Ich habe das Problem lokalisieren können.
Diese Zeile
With ThisWorkbook.VBProject.VBComponents(Worksheets(NameOutputCodeModule).CodeName).CodeModule
hat die Fehlermeldung verursacht.
Durch folgenden Aufruf:

For Each objVBComponent In ActiveWorkbook.VBProject.VBComponents
If ActiveSheet.CodeName = objVBComponent.Name Then
With objVBComponent.CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
End With
Exit For
End If
Next

funktioniert es tadellos.
Keine Ahnung warum dies so ist.
Besten Dank und viele Grüsse
Anzeige

363 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige