Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Nochmals Hilfe bei VBE nötig.

Betrifft: Nochmals Hilfe bei VBE nötig. von: US
Geschrieben am: 28.04.2006 14:29:51

Hallo,

kann mir bitte nochmals jemand bei meinem VBE-Problem helfen ?
Ich komme einfach nicht mehr weiter.

Folgende Aufgabe ist zu lösen:
Ich habe ein Workbook, das ein anderes Workbook erstellt hat und dort einige Worksheets hineinkopiert hat.
Mit den Modulen die kopiert werden, werden auch die jew. Klassenmodule mit einem "

Sub Worksheet_Activate()" kopiert.

Ich möchte nun ein ein neu zu erstellendes VBE-Modul mit einigen simple Zeilen in dem neu erstellten Workbook einfügen. Z.B. 
Sub XXX
'drei Codezeilen
End Sub


Kann mir jemand helfen ?
Ich bekomme es nur hin den Code in dem Modul das den laufenden VBA Code enthält anzulegen.

Vielen Dank !
Ulrich
  


Betrifft: AW: Nochmals Hilfe bei VBE nötig. von: Dan
Geschrieben am: 28.04.2006 15:28:32

Hi, hier ein Beispiel. Den Code in den Standard module kopieren und
Sub Main starten. Gruss Dan
Option Explicit

Private Const NUNBER_OF_LINES As Long = 3
Private Const STD_MODULE = 1

Public 
Sub Main()
    On Error GoTo Err_Main
    
    Dim wrbNewWorkbook As Workbook ' this new workbook will be created from here
    Dim vntNewModule As Variant ' the new workbook will contain this new code-module
    Dim arrCodeLines(1 To NUNBER_OF_LINES) As String
    Dim lngCodeLine As Long
    
    ' fill array with code-lines:
    arrCodeLines(1) = "
Sub Test()"
    arrCodeLines(2) = "MsgBox ""Hallo, test here!"""
    arrCodeLines(3) = "End 
Sub ' Test"
    
    Set wrbNewWorkbook = AddNewWorkbook
    Set vntNewModule = AddStandardModule(wrbNewWorkbook)
    ' write the code-lines to module:
    For lngCodeLine = 1 To NUNBER_OF_LINES
        InsertCodeLines vntNewModule, arrCodeLines(lngCodeLine)
    Next lngCodeLine
    
    Exit Sub
Err_Main:
    MsgBox Err.Description, vbCritical, "Error in 
Sub Main. [" & Err.Number & "]"
End Sub


Public
Function AddNewWorkbook(Optional ByVal i_strWorkbookName As String = "NewWorkbook") As Workbook
    On Error GoTo Err_AddNewWorkbook
    Set AddNewWorkbook = Excel.Workbooks.Add
    AddNewWorkbook.SaveAs ThisWorkbook.Path & "\" & i_strWorkbookName
    Exit Function
Err_AddNewWorkbook:
    MsgBox Err.Description, vbCritical, "Error in 
Function AddNewWorkbook. [" & Err.Number & "]"
End Function


Public
Function AddStandardModule(ByRef io_wrbTarget As Workbook, Optional ByVal i_strModuleName As String = "NewModule") As Variant
    On Error GoTo Err_AddStandardModule
    Set AddStandardModule = io_wrbTarget.VBProject.VBComponents.Add(STD_MODULE)
    Exit Function
Err_AddStandardModule:
    MsgBox Err.Description, vbCritical, "Error in 
Function AddStandardModule. [" & Err.Number & "]"
End Function


Public
Sub InsertCodeLines(ByRef io_vntTarget As Variant, ByRef io_strLineOfCode As String)
    On Error GoTo Err_InsertCodeLines
    Dim lngInsertOnLine As Long
    lngInsertOnLine = io_vntTarget.CodeModule.CountOfLines + 1
    io_vntTarget.CodeModule.InsertLines lngInsertOnLine, io_strLineOfCode
    Exit Sub
Err_InsertCodeLines:
    MsgBox Err.Description, vbCritical, "Error in 
Sub InsertCodeLines. [" & Err.Number & "]"
End Sub



  


Betrifft: AW: Nochmals Hilfe bei VBE nötig. von: US
Geschrieben am: 28.04.2006 15:38:38

Hi Dan,

SUPER !!!
Danke. Ich bin seit Stunden an diesem Problem gewesen.
Deine Lösung passt prima.

Ulrich


  


Betrifft: AW: Nochmals Hilfe bei VBE nötig. von: Dan
Geschrieben am: 28.04.2006 15:40:54

Ok, das freut mich dass es Dir geholfen hat :-)