Variablendefinition

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm TextBox
Bild

Betrifft: Variablendefinition
von: Martin
Geschrieben am: 10.10.2003 14:36:43



Hallo,

ein scheinbar einfaches 'Problem', ich komme aber nicht weiter.
Eine Userform soll Eingaben annehmen und diese in ein Mail eintragen. So weit, so gut. Ich möchte, dass einige Textbox.Values aber im Speicher bleiben, da ich einen Button habe, der den letzten Eintrag aus dem Speicher wieder in die Textbox etc reinlädt. Dies soll funktionieren, auch wenn die Userform mittlerweile 'unloaded' wurde.

Dazu wollte ich die Variablen vor allen Modulen festsetzen, etwa so:

Option Explicit

Dim ldnClient As String
Dim ldnAc As String
Dim ldnUAN As String
Dim ldnDeal As String
Dim ldnChannel1 As String
Dim ldnCallRef As String
Dim ldnCountry As String




Private Sub UserForm_Initialize()
...
End Sub



Private Sub cdbSubmit_Click()
Set ldnClient = txtClient.Value
Set ldnAc = txtACNo.Value
Set ldnUAN = txtUAN.Value
Set ldnDeal = cbDealType.Value
Set ldnChannel1 = cbChannel.Value
Set ldnCallRef = txtCallRef.Value
Set ldnCountry = cbCountry.Value..
End Sub




Private Sub cdbReload_Click()
    txtClient.Value = ldnClient
    txtACNo.Value = ldnAc
    txtUAN.Value = ldnUAN
    cbDealType.Value = ldnDeal
    cbChannel.Value = ldnChannel1
    txtCallRef.Value = ldnCallRef
    cbCountry.Value = ldnCountry
End Sub



Ich setze also die DIMs vor den Modulen und SET dann welche Variable welchen Wert erhalten soll. Es klappt aber nicht, der Speicher wird anscheinend direkt wieder gelöscht. Was mache ich falsch?

Gruss,
Martin
Bild


Betrifft: Public Variable
von: ChrisL
Geschrieben am: 10.10.2003 14:44:12

Hi Martin

Deklariere die Variablen im Standardmodul als Public

Public X as String
usw.

Gruss
Chris


Bild


Betrifft: AW: Public Variable
von: Michael Scjeffler
Geschrieben am: 10.10.2003 14:55:10

Hallo,

das ist das letzte Mittel, was ich empfehlen würde. Vedecke die UserForm mit Hide, dann kannst Du prima auf ihre Inhalte zugreigen.

Gruß

Micha


Bild


Betrifft: AW: Public Variable
von: Martin
Geschrieben am: 10.10.2003 15:06:34

Micha,

er nimmt Hide Me aber nicht an!?!


Bild


Betrifft: Me.Hide
von: ChrisL
Geschrieben am: 10.10.2003 15:07:42

Hi

Wie wärs mit Me.Hide ;-)

Hast übrigens recht Micha, ist besser so.

Gruss
Chris


Bild


Betrifft: Danke euch beiden! oT
von: Martin
Geschrieben am: 10.10.2003 15:10:08

M.


Bild


Betrifft: Nur zum Lernen
von: Franz W.
Geschrieben am: 10.10.2003 19:45:59

Hallo Michael,

was spricht gegen den Einsatz von "Public" ? Zumal wenn es Variable gibt, die in verschiedenen Makros in verschiedenen Modulen verwendet werden? Und was wäre die Alternative? Ich bitte um ein klein bisschen Nachhilfe......


Vielen Dank schon mal und Grüße
Franz


Bild


Betrifft: AW: Nur zum Lernen
von: Michael Scheffler
Geschrieben am: 11.10.2003 10:31:35

Hallo Franz,

es spricht bei kleinen Sachen nichts dagegen, da es zugegebenrmaßen weniger Arbeit macht, mit globalen Variablen zu arbeiten. Bei größeren Projekten dagegen sollte man (egal, ob nun strukturiert oder objektorientiert programmiert) die Variablen immer schön in Argumentlisten der augerufenen Unterprgramme und Funktionen packen:


Sub Test()
Dim doubQuadrat As Double
UP1 strTest:="Test"
doubQuadrat = UP2(3)
End Sub



Sub UP1(strTest As String)
Debug.Print strTest
End Sub



Function UP2(doubTest As Double) As Double
UP2 = doubTest ^ 2
End Sub


Sinn dieser Geschichte ist, dass man dann immer genau weiß, wann welche Daten verändert wurden und so ein Aufbau viel besser zu pflegen ist - man muss immer nur ein Unterprgramm ändern. Für klassenorientierte Programmierung ist Datenkapselung - der Fachbegriff - unerlässlich.

Gruß

Micha


Bild


Betrifft: AW: Nur zum Lernen
von: Franz W.
Geschrieben am: 11.10.2003 11:03:17

Hallo Michael,

danke für die Antwort. Ganz verstanden hab ich's natürlich nicht, dazu fehlen mir ganz einfach die Grundlagen. Aber so eine kleine Grundidee - auch dank Deines eingefügten Beispieles - hab ich doch. Vielen Dank dafür.

Grüße
Franz


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Hochkomma automatisiert setzen"