Excel Makro benutzerdefinierte (TYPE) Variable übergeben
Hallo erst einmal an alle hier im Forum,
ich habe ein Problem mit einem Excel Makro.
Ich habe mit Type eine benutzerdefinierte Variablentyp deklariert.
Z.B.
Type Daten
Feld1 as string
Feld2 as integer
end type
Dann habe ich zwei variablen diese Typs deklariert.
dim Var1 as Daten
dim Var2 as Daten
Ich möchte nun in einer Sub diese Daten mit Werten aus einer Exceltabelle füllen und dann in einem Formular anzeigen.
Da ich aber von verschiedenen Sub's Daten in das Formular schreiben möchte, benötige ich eine SUB, welche einfach nur die Daten in das Formular schreibt.
Wie kann ich die Daten von einer Sub an die andere übergeben.
Beispiel
sub lese
Var1.feld1 ="Test"
Var1.feld2= 5
schreibe var1
end sub
sub schreibe (var2 as Daten)
'Hier möchte ich die Daten in einem Formular anzeigen"
end sub
Ich bekomme eine Fehlermeldung "Typen unverträglich"
Was mache ich falsch, oder wo liegt mien Denkfehler.
Dank im Vorraus,
Joachim
Antwort schreiben
Antwort 1 von coros vom 06.04.2019, 20:13 Options
Hallo Joachim,
Du übergibst in Deinem Makro "lese" an das Makro "schreibe" die Variable "var1". Im Makro "schreibe" dekalrierst Du aber dann die Variable "var2". Dort muss VAriable "var1" deklaiert werden, also
sub schreibe ([b][u]var1 as Daten[/u][/b])
Was ich allerdings nicht verstehe, warum Du die Variablen nicht mit "Publik" in einem Modul deklarierst. Damit hast Du dann überall in allen Makros usw. die Variable mit Ihrem Wert zur Verfügung.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von tiltappe vom 07.04.2019, 13:05 Options
Hallo Oliver,
vielen Dank für deine schnelle Hilfe.
Es funktioniert so, wie du geschrieben hast. Ich hatte da wohl etwas falsch verstanden.
Vielleicht kannst du mir Noch folgendes erklären.
Wenn ich nun die Sub Schreibe von mehreren unterschiedlichen Sub's nutzen möchten und die zu übergebenden Variablen auch verschieden sind (Aber gleicher Typ. ( z.B VAR2, VAR3;VAR4) Kann ich die irgendwie direkt übergeben, oder muss ich diese immer erst in VAR1 kopieren?? Hintergrund meiner Frage: Ich möchte z.B. Werte in ein Formular schreiben und mit einer anderen fest belegten VAriable einen "Default Wert" reinschreiben.
Gruss, schöne Feiertage und nochmals Danke,
Joachim