VBA am Code schnippeln -wie

30/12/2012 - 16:30 von Hans Alborg | Report spam
Hallo nochmal in 2012,

<Excel2007>

Hm. Um Platz zu sparen, plane ich, ein Modul meiner Mappe nicht stàndig
dabeizuhaben.
Eine Tabellenblatt soll mit Werten aus anderen Blàttern derselben Mappe
gefüllt werden.
Das tut eine Routine dieses zeitweise existenten Moduls.

Klicke ich auf eine Zelle dieses Tabellenblatts, startet zunàchst eine
Routine im Hauptmodul (das immer in der Mappe ist).

Da wird zuerst der Datenbereich des Tabellenblatts gelöscht, dann soll das
Makro "Datenholen" in dem "flüchtigen Modul" aufgerufen werden oder ein
Hinweis auf dessen Fehlen (MSGBOX) erfolgen.

Ich kann bereits erfolgreich abfragen, ob das Modul da ist:

If Modul da then i=1 so in etwa.

Wo leider gemeckert wird:

If i=1 then Call Datenholen ()

Das gibt leider eine Fehlermeldung wenn i=0 ist ("finde das Objekt nicht"
o.à.).

Ich wollte dann eine Zeile...

' Call Datenholen ()

in den Code setzen und das REM-Zeichen davor bei Bedarf wegnehmen.

Ich hatte Ähnliches schon gemacht, auf Tabellenblàttern am Ende des Codes.
Aber hier ist es das Hauptmodul mit >4000 Zeilen!

Das Makro ist irgendwo zwischendrin. Mit

With Application.ThisWorkbook.VBProject.VBComponents("Modul1").CodeModule

spreche ich das komplette Modul an. Gibt es eine Möglichkeit, nur ein Makro
(und dessen Zeilennr.) darin auszuwàhlen?
Ich àndere stàndig was im Modul, so daß z.B. "Codezeile 2466" nicht lange
Freude machen würde. Aber eine bestimmte Zeile im bewußten Makro könnte ich
einhalten.

Evtl. ist dieser Workaround ja auch unnötig, wenn es für die obige
Fehlermeldung einen Ausweg gibt?

Tia,
Hans
 

Lesen sie die antworten

#1 Claus Busch
30/12/2012 - 17:16 | Warnen spam
Hallo Hans,

Am Sun, 30 Dec 2012 16:30:47 +0100 schrieb Hans Alborg:

Da wird zuerst der Datenbereich des Tabellenblatts gelöscht, dann soll das
Makro "Datenholen" in dem "flüchtigen Modul" aufgerufen werden oder ein
Hinweis auf dessen Fehlen (MSGBOX) erfolgen.



ich hoffe, dich richtig verstanden zu haben. Modulname und Prozedurname
musst du noch nach deinen Wünschen anpassen.
Test mal:
With Application.ThisWorkbook.VBProject
With .VBComponents("Modul2").CodeModule
For i = 1 To .countoflines
If .procofline(i, 0) <> "" And _
.procofline(i, 0) <> strSubName Then
strSubName = .procofline(i, 0)
If strSubName = "Test_J2" Then
Test_J2
Exit Sub
Else
MsgBox "Modul nicht gefunden"
End If
End If
Next
End With
End With


Mit freundlichen Grüßen
Claus Busch
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3

Ähnliche fragen