Discussion:
VBA: Modul aus Makro aufrufen
(zu alt für eine Antwort)
Florian Zille
2007-08-03 10:56:03 UTC
Permalink
Hallo,

wie kann ich ein Modul aus einem Makro aufrufen? Das Makro ist im
Quellcode des einzelnen Blattes eingefügt. Das Makro liegt in einem
eigenen Modul.

Hier der Quellcode:

Private Sub Worksheet_Change(ByVal Target As Range)

'Makro bei Änderung starten
CompleteCells

End Sub

Als Fehler erhalte ich folgende Meldung:
Fehler beim Kompilieren: Variable oder Prozedur anstelle
eines Moduls erwartet.

Was mache ich falsch?

Gruß,
Florian.
Thomas Ramel
2007-08-03 11:34:02 UTC
Permalink
Grüezi Flroian
Post by Florian Zille
wie kann ich ein Modul aus einem Makro aufrufen? Das Makro ist im
Quellcode des einzelnen Blattes eingefügt. Das Makro liegt in einem
eigenen Modul.
Hier liegt IMO ein direkter Widerspruch vor - wo genau ist das Makro denn
nun gespeichert?
Post by Florian Zille
Private Sub Worksheet_Change(ByVal Target As Range)
'Makro bei Änderung starten
CompleteCells
End Sub
Fehler beim Kompilieren: Variable oder Prozedur anstelle
eines Moduls erwartet.
Was mache ich falsch?
Hast Du den Namen des Moduls (was falsch wäre) oder den des aufzurufenden
Makros angegeben (was richtig wäre)?


**************************
Auch hier wieder einmal die Bitte:
Schildert doch bitte euer Problem anschaulich und ausfühlich, sodass jemand
der sich daran mach euch zu unterstützen dies auch ohne lange Nachfragen und
Vermutungen nachstellen kann.

Die Vermutungen liegen zwar seit einiger Zeit recht nahe am Ziel, aber
dennoch wäre eine klarere Umschreibung oft hilfreich und vermeidet falsche
Schlüsse.
**************************
--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
Florian Zille
2007-08-03 11:48:01 UTC
Permalink
Also das Makro bei Zelländerung liegt im Sheet1.
Das Andere Makro liegt im Modul Complete_Cells und heißt CompleteCells.
Ich hatte für das Modul und das Makro den gleichen Namen. Hab ich (siehe
oben) nun unterschiedlich. Jetzt bricht es erneut ab: Argument nicht Optional.
Die Sub ist jetzt auch nicht mehr Private.

Gruß,
Flo.
Post by Thomas Ramel
Grüezi Flroian
Post by Florian Zille
wie kann ich ein Modul aus einem Makro aufrufen? Das Makro ist im
Quellcode des einzelnen Blattes eingefügt. Das Makro liegt in einem
eigenen Modul.
Hier liegt IMO ein direkter Widerspruch vor - wo genau ist das Makro denn
nun gespeichert?
Post by Florian Zille
Private Sub Worksheet_Change(ByVal Target As Range)
'Makro bei Änderung starten
CompleteCells
End Sub
Fehler beim Kompilieren: Variable oder Prozedur anstelle
eines Moduls erwartet.
Was mache ich falsch?
Hast Du den Namen des Moduls (was falsch wäre) oder den des aufzurufenden
Makros angegeben (was richtig wäre)?
**************************
Schildert doch bitte euer Problem anschaulich und ausfühlich, sodass jemand
der sich daran mach euch zu unterstützen dies auch ohne lange Nachfragen und
Vermutungen nachstellen kann.
Die Vermutungen liegen zwar seit einiger Zeit recht nahe am Ziel, aber
dennoch wäre eine klarere Umschreibung oft hilfreich und vermeidet falsche
Schlüsse.
**************************
--
Mit freundlichen Grüssen
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003]
Helmut Weber
2007-08-03 12:01:49 UTC
Permalink
Hallo Florian,
Post by Florian Zille
Argument nicht Optional.
Höchstwahrscheinlich fehlt dann das Argument.

Public Sub TestMessage(Msg As String)
MsgBox Msg
End Sub

Public Sub Showme()
TestMessage ' hier fehlt das Argument
End Sub

Dies hier würde funktionieren:

Public Sub Showme()
TestMessage "Test"
End Sub

Oder auch das:

Public Sub TestMessage(Optional Msg As String)
MsgBox Msg
End Sub

dann kann das Argument auch fehlen.
--
Gruß

Helmut Weber, MVP WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003 (US-Versions)
Thomas Ramel
2007-08-03 13:24:01 UTC
Permalink
Grüezi Florian
Post by Florian Zille
Also das Makro bei Zelländerung liegt im Sheet1.
OK.
Post by Florian Zille
Das Andere Makro liegt im Modul Complete_Cells und heißt CompleteCells.
Auch OK.
Post by Florian Zille
Ich hatte für das Modul und das Makro den gleichen Namen.
Autsch!
Das ist fast so schlimm wie ein Makro nach einem internen Begriff zu benennen.
Post by Florian Zille
Hab ich (siehe oben) nun unterschiedlich.
Fein ;-)
Post by Florian Zille
Jetzt bricht es erneut ab: Argument nicht Optional.
Die Sub ist jetzt auch nicht mehr Private.
...ach das war sie auch noch...?

Sorry, Florian - aber wie sollen wir professionell (wie wir dies hier gerne
tun) helfen wenn Du uns so viele Informationen verschweigst und erst auf
Nachfrage dann tröpfchenweise zur Verfügung stellst?


Leg die Karten auf den Tisch und zeige uns deinen Code, den Du aufrufen
willst sowie die Deklarationen die ev. dazu gehören oder sonst noch im Modul
stehen wo Du den Code abgelegt hast.
--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
Florian Zille
2007-08-06 06:02:03 UTC
Permalink
Ich habe in meinem ersten Posting den Quellcode eingetragen
und das Problem genau beschrieben!!
In Tabelle1(Sheet1) rufe ich bei Worksheet_Change das Makro CompleteCells im
Modul Complete_Cells auf. Sollte ja einfach mit Call oder direkt mit dem
Makronamen gehen. Aber ich erhalte dann den besagten Fehler.

Flo
Post by Thomas Ramel
Grüezi Florian
Post by Florian Zille
Also das Makro bei Zelländerung liegt im Sheet1.
OK.
Post by Florian Zille
Das Andere Makro liegt im Modul Complete_Cells und heißt CompleteCells.
Auch OK.
Post by Florian Zille
Ich hatte für das Modul und das Makro den gleichen Namen.
Autsch!
Das ist fast so schlimm wie ein Makro nach einem internen Begriff zu benennen.
Post by Florian Zille
Hab ich (siehe oben) nun unterschiedlich.
Fein ;-)
Post by Florian Zille
Jetzt bricht es erneut ab: Argument nicht Optional.
Die Sub ist jetzt auch nicht mehr Private.
...ach das war sie auch noch...?
Sorry, Florian - aber wie sollen wir professionell (wie wir dies hier gerne
tun) helfen wenn Du uns so viele Informationen verschweigst und erst auf
Nachfrage dann tröpfchenweise zur Verfügung stellst?
Leg die Karten auf den Tisch und zeige uns deinen Code, den Du aufrufen
willst sowie die Deklarationen die ev. dazu gehören oder sonst noch im Modul
stehen wo Du den Code abgelegt hast.
--
Mit freundlichen Grüssen
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003]
Thomas Ramel
2007-08-06 07:22:01 UTC
Permalink
Grüezi Florian

On 6 Aug., 08:02, Florian Zille
Post by Florian Zille
Ich habe in meinem ersten Posting den Quellcode eingetragen
und das Problem genau beschrieben!!
...inzwischen aber doch wieder einiges verändert, was doch wieder eine
neue Ausgangslage schafft.
Post by Florian Zille
In Tabelle1(Sheet1) rufe ich bei Worksheet_Change das Makro CompleteCells im
Modul Complete_Cells auf. Sollte ja einfach mit Call oder direkt mit dem
Makronamen gehen. Aber ich erhalte dann den besagten Fehler.
Post by Florian Zille
Also das Makro bei Zelländerung liegt im Sheet1.
Das Andere Makro liegt im Modul Complete_Cells und heißt CompleteCells.
Ich hatte für das Modul und das Makro den gleichen Namen.
Hab ich (siehe oben) nun unterschiedlich.
Die Sub ist jetzt auch nicht mehr Private.
Wie ist denn das Makro 'CompleteCells' aufgebaut?
Könntest Du uns nicht wenigstens die ersten Zeilen zeigen?
Post by Florian Zille
Post by Florian Zille
Jetzt bricht es erneut ab: Argument nicht Optional.
Diese Fehlermeldung deutet nämlich darauf hin, dass die aufgerufene
Prozedur einen Parameter als Übergaewert erwartet, der jedoch in
deinem Aufruf nicht enthalten ist.

--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
Florian Zille
2007-08-06 11:16:01 UTC
Permalink
Es könnte vielleicht wirklich an der Übergabe liegen. Ohne Übergabe klappt es.

Hier mein neuer Code:

Public c, r as integer

Sub Worksheet_Change(Target As Range)

'Macro bei Zelländerung aufrufen
r = Target.Row
c = Target.Column
CompleteCells

End Sub

Ich dachte mir, wenn es mit der Targe Übergabe auf das Makro nicht
geht, fülle ich die Variablen c und r noch vorhger in globale Variablen.
Jedoch erhalte ich dann im anderen Macro für c und r eine leere Variable.

Wie kann ich die Markierte Zelle nun am besten in mein Makro einlesen?
Das Makro soll bei einer Zelländerung aufgerufen werden.

Gruß,
Flo.
Post by Thomas Ramel
Grüezi Florian
On 6 Aug., 08:02, Florian Zille
Post by Florian Zille
Ich habe in meinem ersten Posting den Quellcode eingetragen
und das Problem genau beschrieben!!
....inzwischen aber doch wieder einiges verändert, was doch wieder eine
neue Ausgangslage schafft.
Post by Florian Zille
In Tabelle1(Sheet1) rufe ich bei Worksheet_Change das Makro CompleteCells im
Modul Complete_Cells auf. Sollte ja einfach mit Call oder direkt mit dem
Makronamen gehen. Aber ich erhalte dann den besagten Fehler.
Post by Florian Zille
Also das Makro bei Zelländerung liegt im Sheet1.
Das Andere Makro liegt im Modul Complete_Cells und heißt CompleteCells.
Ich hatte für das Modul und das Makro den gleichen Namen.
Hab ich (siehe oben) nun unterschiedlich.
Die Sub ist jetzt auch nicht mehr Private.
Wie ist denn das Makro 'CompleteCells' aufgebaut?
Könntest Du uns nicht wenigstens die ersten Zeilen zeigen?
Post by Florian Zille
Post by Florian Zille
Jetzt bricht es erneut ab: Argument nicht Optional.
Diese Fehlermeldung deutet nämlich darauf hin, dass die aufgerufene
Prozedur einen Parameter als Übergaewert erwartet, der jedoch in
deinem Aufruf nicht enthalten ist.
--
Mit freundlichen Grüssen
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003]
Thomas Ramel
2007-08-06 12:22:01 UTC
Permalink
Grüezi Florian
Post by Florian Zille
Es könnte vielleicht wirklich an der Übergabe liegen. Ohne Übergabe klappt es.
Aha, danke für die Info - aber den Code deiner Prozedur 'CompleteCells'
vermissen wir hier noch immer - bitte, Florian, trage unseren Nachfraben soch
Rechnung und gib und sie Infos nach denen wir fragen.
...denn unsere Fragen sind in aller Regel nicht ganz ohne Hintergrund.
Post by Florian Zille
Public c, r as integer
Sub Worksheet_Change(Target As Range)
'Macro bei Zelländerung aufrufen
r = Target.Row
c = Target.Column
CompleteCells
End Sub
Ich dachte mir, wenn es mit der Targe Übergabe auf das Makro nicht
geht, fülle ich die Variablen c und r noch vorhger in globale Variablen.
Jedoch erhalte ich dann im anderen Macro für c und r eine leere Variable.
Wie kann ich die Markierte Zelle nun am besten in mein Makro einlesen?
Mit dem Übergabeparameter eben - dies dann wenn dein Makro 'CompleteCells'
einen solchen erwartet.
Post by Florian Zille
Das Makro soll bei einer Zelländerung aufgerufen werden.
Der Aufruf müstte dann IMO etwas so aussehen:

Sub Worksheet_Change(Target As Range)

CompleteCells Target

End Sub
--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
Florian Zille
2007-08-07 07:32:12 UTC
Permalink
Wenn ich den Aufruf mit CompleteCells Target mache geht es jetzt endlich

Hier das andere Makro verkürzt und mit 2 MsgBox-en zur Kontrolle.

Option Explicit
Public Button As String
Public c As Integer
Public Country As String
Public CurrentCell As String
Public Frequency As String
Public HW As String
Public i As Integer
Public MLFB_Exists As Boolean
Public Ni_Exists As Boolean
Public Key As String
Public Key_Exists As Boolean
Public KeyType1 As String
Public KeyType2 As String
Public Logo As String
Public r As Integer
Public z As Integer

Sub CompleteCells(ByVal Target As Range)

'Auswahl auslesen
c = Target.Column
r = Target.Row
MsgBox r & " , " & c
CurrentCell = Cells(r, c).Value
MsgBox CurrentCell
ChooseKey.Show

End Sub

Mein Problem ist jetzt der Aufruf der Userform ChooseKey. Laufzeitfehler 13,
Typenunverträglichkeit.

Gruß,
Flo.
Post by Thomas Ramel
Grüezi Florian
Post by Florian Zille
Es könnte vielleicht wirklich an der Übergabe liegen. Ohne Übergabe klappt es.
Aha, danke für die Info - aber den Code deiner Prozedur 'CompleteCells'
vermissen wir hier noch immer - bitte, Florian, trage unseren Nachfraben soch
Rechnung und gib und sie Infos nach denen wir fragen.
...denn unsere Fragen sind in aller Regel nicht ganz ohne Hintergrund.
Post by Florian Zille
Public c, r as integer
Sub Worksheet_Change(Target As Range)
'Macro bei Zelländerung aufrufen
r = Target.Row
c = Target.Column
CompleteCells
End Sub
Ich dachte mir, wenn es mit der Targe Übergabe auf das Makro nicht
geht, fülle ich die Variablen c und r noch vorhger in globale Variablen.
Jedoch erhalte ich dann im anderen Macro für c und r eine leere Variable.
Wie kann ich die Markierte Zelle nun am besten in mein Makro einlesen?
Mit dem Übergabeparameter eben - dies dann wenn dein Makro 'CompleteCells'
einen solchen erwartet.
Post by Florian Zille
Das Makro soll bei einer Zelländerung aufgerufen werden.
Sub Worksheet_Change(Target As Range)
CompleteCells Target
End Sub
--
Mit freundlichen Grüssen
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003]
Thomas Ramel
2007-08-07 09:32:25 UTC
Permalink
Grüezi Florian
Post by Florian Zille
Wenn ich den Aufruf mit CompleteCells Target mache geht es jetzt endlich
...das hatte ich auch nicht anders erwartet....

Denn wenn deine Sub einen Parameter erwartet, Du diesen beim Aufruf aber
nicht übergibst, kann nichts gehen.
Post by Florian Zille
Hier das andere Makro verkürzt und mit 2 MsgBox-en zur Kontrolle.
Option Explicit
Public Button As String
Public c As Integer
Public Country As String
Public CurrentCell As String
Public Frequency As String
Public HW As String
Public i As Integer
Public MLFB_Exists As Boolean
Public Ni_Exists As Boolean
Public Key As String
Public Key_Exists As Boolean
Public KeyType1 As String
Public KeyType2 As String
Public Logo As String
Public r As Integer
Public z As Integer
Sub CompleteCells(ByVal Target As Range)
'Auswahl auslesen
c = Target.Column
r = Target.Row
MsgBox r & " , " & c
CurrentCell = Cells(r, c).Value
MsgBox CurrentCell
ChooseKey.Show
End Sub
Mein Problem ist jetzt der Aufruf der Userform ChooseKey. Laufzeitfehler 13,
Typenunverträglichkeit.
Tja, dann musst Du an dieser Stelle weiter forschen:

Was erwartet die Userform?
Ist sie bereits geladen?
Welcher Code läuft dort beim Laden und/oder anzeigen ab?
Welche Parameter erwartet er?
Wie sind die Variablen deklariert und welche Daentypen übergibst Du?


Mangels Kenntnis deines weiteren Codes fällt auch die Hilfe etwas unkonkret
aus....

Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Florian Zille
2007-08-07 10:24:25 UTC
Permalink
Ich dachte mir, wenn ich Variablen global definiere,
kann ich Sie in jedem Makro bzw. jeder Userform verwenden.
Wie übergebe ich eine Variable an eine Userform? So wie an
eine Sub? Mach das leider normalerweise nie. Der Fehler tritt
auf, sobald ich eine Variable (die global ist und in meinem
Makro mit Inhalt gefüllt wird) mit einem Zellinhalt fülle.

Code:

Sub UserForm_Initialize()

'Anzahl der Zeilen einlesen
Worksheets("Variants").Select
Worksheets("Variants").UsedRange.Select
z = Selection.Rows.Count

'Zugriff auf globale Variable
For i = 1 To z Step 1
If CurrentCell = Worksheets("Variants").Cells(i, c).Value then
'hier tritt

'der Fehler auf
'Weiterer Programmteil
End If
Next i

End Sub

Gruß,
Florian.
Post by Thomas Ramel
Grüezi Florian
Post by Florian Zille
Wenn ich den Aufruf mit CompleteCells Target mache geht es jetzt endlich
...das hatte ich auch nicht anders erwartet....
Denn wenn deine Sub einen Parameter erwartet, Du diesen beim Aufruf aber
nicht übergibst, kann nichts gehen.
Post by Florian Zille
Hier das andere Makro verkürzt und mit 2 MsgBox-en zur Kontrolle.
Option Explicit
Public Button As String
Public c As Integer
Public Country As String
Public CurrentCell As String
Public Frequency As String
Public HW As String
Public i As Integer
Public MLFB_Exists As Boolean
Public Ni_Exists As Boolean
Public Key As String
Public Key_Exists As Boolean
Public KeyType1 As String
Public KeyType2 As String
Public Logo As String
Public r As Integer
Public z As Integer
Sub CompleteCells(ByVal Target As Range)
'Auswahl auslesen
c = Target.Column
r = Target.Row
MsgBox r & " , " & c
CurrentCell = Cells(r, c).Value
MsgBox CurrentCell
ChooseKey.Show
End Sub
Mein Problem ist jetzt der Aufruf der Userform ChooseKey. Laufzeitfehler 13,
Typenunverträglichkeit.
Was erwartet die Userform?
Ist sie bereits geladen?
Welcher Code läuft dort beim Laden und/oder anzeigen ab?
Welche Parameter erwartet er?
Wie sind die Variablen deklariert und welche Daentypen übergibst Du?
Mangels Kenntnis deines weiteren Codes fällt auch die Hilfe etwas unkonkret
aus....
Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Thomas Ramel
2007-08-07 11:32:06 UTC
Permalink
Grüezi Flroian
Post by Florian Zille
Ich dachte mir, wenn ich Variablen global definiere,
kann ich Sie in jedem Makro bzw. jeder Userform verwenden.
Dem ist prinzipell schon so - Du musst der Variablen allerdings einen Wert
in der Art übergeben wie Du sie auch deklariert hast - einem String also
einen String und einem Double einen Double usf....
Post by Florian Zille
Wie übergebe ich eine Variable an eine Userform? So wie an
eine Sub? Mach das leider normalerweise nie. Der Fehler tritt
auf, sobald ich eine Variable (die global ist und in meinem
Makro mit Inhalt gefüllt wird) mit einem Zellinhalt fülle.
Welche Variable?
Wie ist sie deklariert?
Welchen Wert übergibst Du ihr?
Ist er vom gleichen Datentyp wie die Variable selbst?

Die Fragen könnte ich mir/dir alle selbst beantworten, doch ich gehe davon
aus, dass Du der Sache selber auf die Spur kommmen willst und stelle sie
daher als Gedankenansstoss.
Post by Florian Zille
Sub UserForm_Initialize()
...warum nennst Du diesen erst jetzt auf vorherige Nachfrage?
Hier liegt doch ein ähliches Problem vor wie zuvor, nämlich dass der
nachforlgende Code mit der Übergabe nicht klar kommmt.
Ohne diesen nachfolgenen Code zu kennen kann (ich zumindest) keine klare
Antwort geben.
Post by Florian Zille
'Anzahl der Zeilen einlesen
Worksheets("Variants").Select
Worksheets("Variants").UsedRange.Select
z = Selection.Rows.Count
Warum selektierst Du hier?
Das ist zu 99% nicht notwendig.
Post by Florian Zille
'Zugriff auf globale Variable
For i = 1 To z Step 1
If CurrentCell = Worksheets("Variants").Cells(i, c).Value then
Dann würde ich im Überwachungsfenster mal die Datentypen vergleichen.
Post by Florian Zille
'hier tritt der Fehler auf
'Weiterer Programmteil
End If
Next i
End Sub
Mir scheint der ganze Ablauf etwas kompliziert zu sein.

Was willst Du genau tun?
Kannst Du dies umschreiben und allgemein erklären?

Ich denke, dass es sehr viel einfacher (sprich direkter) möglich sein soll
dein Ziel zu errreichen.
--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
Florian Zille
2007-08-07 11:46:03 UTC
Permalink
Hallo Thomas,

bin leider kein Programmierer, mach das nur aus der Notwendigkeit heraus.
Also ich Beschreibe Dir kurz die Programmeigenschaften:

1. Autostart bei Zelländerung (geht ja jetzt)
2. Wenn eine Zelle in Blatt 1 geändert wird lese ich die markierte Zelle aus
(erledigt)
3. Nun möchte ich ein zweites Blatt öffnen und wenn die markierte
Zelle = einer Zelle aus einer bestimmten Zeile des 2. Blattes ist sollen
alle Zellen in eine ListBox (in der UserForm) ausgegeben werden.
4. Nun soll der User eine Zeile in der ListBox auswählen und diese in
eine Zelle in Blatt 1 kopieren und weitere Zellen in Blatt 1 kopieren.
5. Ende

Brauchst Du noch mehr Infos?

Gruß,
Flo.
Post by Thomas Ramel
Grüezi Flroian
Post by Florian Zille
Ich dachte mir, wenn ich Variablen global definiere,
kann ich Sie in jedem Makro bzw. jeder Userform verwenden.
Dem ist prinzipell schon so - Du musst der Variablen allerdings einen Wert
in der Art übergeben wie Du sie auch deklariert hast - einem String also
einen String und einem Double einen Double usf....
Post by Florian Zille
Wie übergebe ich eine Variable an eine Userform? So wie an
eine Sub? Mach das leider normalerweise nie. Der Fehler tritt
auf, sobald ich eine Variable (die global ist und in meinem
Makro mit Inhalt gefüllt wird) mit einem Zellinhalt fülle.
Welche Variable?
Wie ist sie deklariert?
Welchen Wert übergibst Du ihr?
Ist er vom gleichen Datentyp wie die Variable selbst?
Die Fragen könnte ich mir/dir alle selbst beantworten, doch ich gehe davon
aus, dass Du der Sache selber auf die Spur kommmen willst und stelle sie
daher als Gedankenansstoss.
Post by Florian Zille
Sub UserForm_Initialize()
...warum nennst Du diesen erst jetzt auf vorherige Nachfrage?
Hier liegt doch ein ähliches Problem vor wie zuvor, nämlich dass der
nachforlgende Code mit der Übergabe nicht klar kommmt.
Ohne diesen nachfolgenen Code zu kennen kann (ich zumindest) keine klare
Antwort geben.
Post by Florian Zille
'Anzahl der Zeilen einlesen
Worksheets("Variants").Select
Worksheets("Variants").UsedRange.Select
z = Selection.Rows.Count
Warum selektierst Du hier?
Das ist zu 99% nicht notwendig.
Post by Florian Zille
'Zugriff auf globale Variable
For i = 1 To z Step 1
If CurrentCell = Worksheets("Variants").Cells(i, c).Value then
Dann würde ich im Überwachungsfenster mal die Datentypen vergleichen.
Post by Florian Zille
'hier tritt der Fehler auf
'Weiterer Programmteil
End If
Next i
End Sub
Mir scheint der ganze Ablauf etwas kompliziert zu sein.
Was willst Du genau tun?
Kannst Du dies umschreiben und allgemein erklären?
Ich denke, dass es sehr viel einfacher (sprich direkter) möglich sein soll
dein Ziel zu errreichen.
--
Mit freundlichen Grüssen
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003]
Helmut Weber
2007-08-03 11:50:34 UTC
Permalink
Hallo Thomas,

ausgehend von der ursprünglichen Frage,
versuche ich, zwischen zwei gleichnamigen Makros
in zwei Modulen von Personal.xls zu unterscheiden.
Geht das?

Hätte es mir etwa so vorgestellt:
Application.Run "Personal.xls!module1!message"

im Gegensatz zu:
Application.Run "Personal.xls!module2!message"

Schönen Tag noch.
--
Gruß

Helmut Weber, MVP WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003 (US-Versions)
Thomas Ramel
2007-08-04 09:45:33 UTC
Permalink
Grüezi Helmut

Helmut Weber schrieb am 03.08.2007
Post by Helmut Weber
ausgehend von der ursprünglichen Frage,
versuche ich, zwischen zwei gleichnamigen Makros
in zwei Modulen von Personal.xls zu unterscheiden.
Geht das?
Application.Run "Personal.xls!module1!message"
Application.Run "Personal.xls!module2!message"
...Und? Warst Du erfolgreich?

IMO ist dies nicht möglich.
Mit Application.Run kannst Du eine Datei definieren und ein darin
enthaltendes Makro starten. Dieses muss jedoch 'Public' sein, damit es in
der gesamten Mappe 'gesehen' werden kann. Eine weitere Spezifikation des
Modules welches das Makro enthält ist nicht vorgesehen.

Dies legt dann nahe, dass es in derselben Mappe kein weiteres
'Public'-Makro mit demselben Namen geben darf.


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Helmut Weber
2007-08-04 11:10:06 UTC
Permalink
Hallo Thomas,
Post by Thomas Ramel
Post by Helmut Weber
Application.Run "Personal.xls!module1!message"
Application.Run "Personal.xls!module2!message"
...Und? Warst Du erfolgreich?
Nein.

Danke schön für die Auskunft.
--
Gruß

Helmut Weber, MVP WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003 (US-Versions)
t***@t-online.de
2007-08-03 11:39:32 UTC
Permalink
hallo florian

der einfachste weg ein makro aufzurufen:

Private Sub Worksheet_Change(ByVal Target As Range)
Call HierDerGenaueNameDesMakros
End Sub

dabei wird aber bei jeder zellenänderung das makro ausgeführt

mfg tom
Florian Zille
2007-08-03 11:52:02 UTC
Permalink
So sollte es auch sein. Bei jeder Änderung aufrufen.
Aufruf mit Call oder ohne ist egal.

Erhalte dann den Fehler: Argument nicht optional.
Auch wenn das Makro nur Sub statt Private Sub ist.
Post by t***@t-online.de
hallo florian
Private Sub Worksheet_Change(ByVal Target As Range)
Call HierDerGenaueNameDesMakros
End Sub
dabei wird aber bei jeder zellenänderung das makro ausgeführt
mfg tom
Loading...