Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
596to600
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
596to600
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Modul einfügen

Modul einfügen
13.04.2005 08:16:01
Matthias
Hallo Leute
Ich habe zwei Probleme:
1. Ich muss mit einem Makro ein neues Modul einfügen.
2. Ich muss in dieses Modul mit einem Makro etwas reinschreiben.
Vermutlich ziemlich simpel. Aber ich habe bisher trotzdem nichts gefunden.
Ich danke euch für eure Tipps.
Grüsse

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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

Anzeige
Hilfe!!!
13.04.2005 21:03:07
Matthias
Hallo
Ich danke für die Beispiele. Aber ich komme trotzdem nicht einen Schritt weiter. Ich habe immer und ewig Fehler im Zusammenhang mit VBComponents und VBProject. Und wenn der Fehler einmal nach einer Anpassung nicht auftritt habe ich einen "Anwendungs- oder Objektdefinierter Fehler".
Also mal von vorne. Ist es denn so schwer

Sub makro generieren()
suchen = "HNN9008A"
suchen_in_parts
End Sub

in den Codebereich von "Tabelle1" einzutragen.
Ich steh im Moment total auf der Leitung.
Danke für eure Hilfe.
AW: Hilfe!!!
14.04.2005 08:59:16
Rolf
Hallo Matthias,
damit die Beispiele funktionieren,
musst du einen Verweis setzen auf
Microsoft Visual Basic for Applications Extensibility x.x (x.x ist bei mir 5.3)
fG
Rolf
Anzeige
AW: Hilfe!!!
14.04.2005 13:55:12
Matthias
Hallo
Ich danke für den Hinweis mit der Microsoft Visual Basic for Applications Extensibility. Ich kann jetz etwas mit dem Code anfangen. Habe eine weitere Frage:
.CreateEventProc("Activate", "Worksheet") erzeugt eine Private Sub. Ich kann aber damit nichts anfangen, da ich die Prozedur später als Makro finden muss. Es darf also nur eine sub makroname () sein.
Kannst du mir ein weiteres mal helfen.
Gruss
AW: Hilfe!!!
14.04.2005 14:50:16
Rolf
Hallo Matthias,
deine Frage war so:
Und noch einmal hallo
Ich habe noch eine weitere Frage: Kann mir jemand sagen, wie ich etwas per VBA Makro in den Codebereich eines Tabellenblattes einfügen kann? Ist dies überhaupt möglich?
Danke und Grüsse
Matthias
Im Codebereich eines Tabellenblatts wird üblicherweise Ereigniscode hinterlegt -
dafür war das Kofler Beispiel gedacht.
"Normalen" Code legst du einfach gemäß meinem 2. Beispiel an.
fG
Rolf
Anzeige
AW: Hilfe!!!
14.04.2005 19:42:17
Matthias
Hallo Rolf
Der Grund weshalb ich den Code unbedingt in der Tabelle haben möchte ist recht simpel. Ich habe 12 Blätter in der Arbeitsmappe und in jedem Blatt brauche ich immer das gleiche Makro:

Sub gp300_01 ()
suchen = partnummer 'Variable für eine Artikelnummer
suchen_in_parts 'Makro in einem anderen Modul
sheets(come_from).select
End Sub

Es ändert nur immer nur der Wert in der Variable suchen. Es werden in Zukunft weitere Tabellen hinzukommen und für diesen Zweck will ich eine Userform durch welche das Makro oben generiert wird. gp300_01 und partnummer sind Variablen, welche aus textboxen übernommen werden. Meine Idee war es halt das Tabellenobjekt als Container für die dazugehörenden Makros zu verwenden.
Es mag vieleicht der falsche Weg sein aber mir erschien es nicht so abwegig.
Nur so mal als Feedback und Erklärung für meine Fragen.
Gruss Matthias
Anzeige
AW: Modul einfügen
13.04.2005 09:22:23
ChrisSp
Hi Matthias,
https://www.herber.de/mailing/images/code/164502.gif
habe ich hier irgendwann mal irgendwo in der Recherche gefunden - frag mich bloß nicht wo :o)
mit: Application.VBE.VBProjects() kommst du an alle VBA-Projekte ran,
mit: Application.VBE.VBProjects().VBComponents() wären dann die einzelnen Komponenten, also auch die Module dran
der Rest sollte mit dem Beispiel klappen, oder?
Gruss
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige