AW: Modul einfügen
13.04.2005 09:18:57
Rolf
Hallo Matthias,
besorg' dir mal das Tutorial von Hans Herber -
da findest du solche Sachen
fG
Rolf
'Standardmodul in der aktiven Arbeitsmappe anlegen
Sub modul_anlegen()
Dim mdl As Object
Dim mdlName As String
mdlName = "NeuesModul" 'keine Leerzeichen im Namen!!!
Set mdl = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
With mdl
.Name = mdlName
.Activate
End With
End Sub
'Code in bestehendes Standardmodul einfügen
Sub code_in_Standardmodul_einfügen()
Dim mdl As Object
Dim feld As Range
Dim sCode As String
Dim mdlName As String
mdlName = "NeuesModul"
sCode = "
Sub Message" & vbLf
sCode = sCode & " MsgBox ""Ich bin der neue Code!""" & vbLf
sCode = sCode & "End Sub
"
Set mdl = ActiveWorkbook.VBProject.VBComponents(mdlName).CodeModule
With mdl
.AddFromString sCode
.CodePane.Show
End With
End Sub
Und hier ein Beispiel von Michael Kofler
zu deiner 2. Frage
Sub AddWorksheetWithEvents()
Const newname$ = "neues Tabellenblatt"
Dim ws As Worksheet
Dim vbc As VBComponent
Dim wsname$, linenr, dummy
' testen, ob Tabellenblatt schon existiert
On Error Resume Next
dummy = ThisWorkbook.Worksheets(newname).Name
If Err = 0 Then
MsgBox "Das Tabellenblatt " & newname & " existiert schon. Bitte löschen Sie das Tabellenblatt und führen Sie die Prozedur nochmals aus."
Exit Sub
End If
Err = 0
On Error GoTo 0
' Tabellenblatt erzeugen, den Namen »neues Tabellenblatt« zuweisen
Set ws = ThisWorkbook.Worksheets.Add
ws.Name = newname
' VBE-internen Namen für dieses Tabellenblatt ermitteln
For Each vbc In ThisWorkbook.VBProject.VBComponents
If vbc.Type <> 3 Then 'Userforms übergehen/von mir eingefügt wg.Excel2000 rb
If vbc.Properties("Name").Value = newname Then
wsname = vbc.Name
Exit For
End If
End If
Next
' Prozedur hinzufügen
With ThisWorkbook.VBProject.VBComponents(wsname).CodeModule
linenr = .CreateEventProc("Activate", "Worksheet")
.InsertLines linenr + 1, " MsgBox ""Ereignisprozedur"""
End With
End Sub