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

Variablendefinition

Variablendefinition
10.10.2003 14:36:43
Martin
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Public Variable
10.10.2003 14:44:12
ChrisL
Hi Martin

Deklariere die Variablen im Standardmodul als Public

Public X as String
usw.

Gruss
Chris
AW: Public Variable
10.10.2003 14:55:10
Michael Scjeffler
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
AW: Public Variable
10.10.2003 15:06:34
Martin
Micha,

er nimmt Hide Me aber nicht an!?!
Me.Hide
10.10.2003 15:07:42
ChrisL
Hi

Wie wärs mit Me.Hide ;-)

Hast übrigens recht Micha, ist besser so.

Gruss
Chris
Danke euch beiden! oT
10.10.2003 15:10:08
Martin
M.
Nur zum Lernen
10.10.2003 19:45:59
Franz W.
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
Anzeige
AW: Nur zum Lernen
11.10.2003 10:31:35
Michael Scheffler
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
Anzeige
AW: Nur zum Lernen
11.10.2003 11:03:17
Franz W.
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige