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

Definition und befüllen von globalen Variablen

Definition und befüllen von globalen Variablen
22.07.2004 17:58:11
globalen
hallo liebe forumgemeinde,
in einer excelmappe möchte bei verlassen eines registerblattes, einen bestimmten wert in eine global definierte variable schreiben, damit ich in einem anderen registerblatt (der selben arbeitsmappe) direkt nach diesem wert in der globalen variable suchen und eventuell direkt dorthin (in die zeile mit dem entsprechenden wert) verzweigen kann.
die variable befüllen wollte ich beim ereignis

Private Sub Worksheet_Deactivate()
End Sub

leider bin ich dann aber mit ActiveCell.Select schon im neuen registerblatt. gibt es vielleicht ein besseres ereignis zum befüllen der globalen variable? spontan fiel mir

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
als geeingetes ereignis ein. das setzt aber voraus das ich was ändere, oder? scheint mir daher eher ungeeignet?
dann habe ich ausserdem probleme mit der deklaration der globalen variable. public st_nr As String hat auf jeden fall nicht funktioniert. wenn ich die hilfe richtig verstanden habe, ist dieses schlüsselwort public eigentlich auch für die deklaration von globalen prozeduren gedacht!?
kann mir jemand helfen, bzw. einen tipp geben, wie ich meine probleme aus meiner excel-welt verbanne?;)
im voraus vielen dank für eure meinungen, tipps, anregungen!
gse

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Definition und befüllen von globalen Variablen
22.07.2004 18:10:45
globalen
Hallo "gse"
eine Variable musst du genau dann als Public deklarieren, wenn du deren Wert in verschiedenen Modulen verarbeiten willst. (wenn nicht unbedingt notwendig, dann würde ich auch keine Public-Variablen verwenden)
Wenn du verschiedene Tabellenblätter ansprechen willst, dann hat das nichts mit "Public" zu tun, sondern ist eher eine Frage der richtigen Referenzierung der Tabellenblätter
einfaches Bsp:
Sheets("Tabelle1).Range("A1) = Sheets("Tabelle2").Range("C1")
holt dir den Wert von Tab2 nach Tab1 (ganz ohne Variable)
Auf Select kannst du zu 99% verzichten, das kostet nur Zeit.
(während die einen noch "selektieren", wird in Villa Bacho...)
schau mal hier:
http://xlfaq.herber.de/xlbasics/main_sel.htm
Gruß
Christoph
Anzeige
AW: Definition und befüllen von globalen Variablen
globalen
hallo christoph,
herzlichen Dank für Deine Antwort. mein problem ist, dass ich eigentlich immer einen wert des aktuellen sheets mitnehmen will. welche zeile das ist, weiss ich dann also nicht und habe daher ein problem den zielbereich genau zu referenzieren. deswegen meine idee beim deaktivieren des sheets, eine variable zu befüllen, wenn ich dann von einem blatt zum nächsten wechsle. den wert will ich auch nur von einem zum anderen sheet mitnehmen.
hast Du da vielleicht noch eine idee? oder jemand anderes?
und v.a. wie und wo definiere/deklariere ich den eine globale variable. mach ich das in dem standardmaessig mit angelegten modul? oder in der referenz zur excel-mappe ("Diese Arbeitsmappe")
gruss und frohes schaffen
gse
Anzeige
AW: Definition und befüllen von globalen Variablen
23.07.2004 10:58:54
globalen
Hallo "Günter-Siegfried-Eugen" (oder wie mag er heißen?)
Public-Variable müssen in einem Standard-Modul deklariert werden und zwar im Deklarationsteil, also ganz oben, direkt nach "Option Explicit".
StandardModul: im VBA-Editor: einfügen - Modul. Also nicht in dem Klassenmodul der Tabelle oder des Workbooks.
hier zwei Beispiele zür Übergabe von Werten:
1: mit Public:
Im Klassenmodul der Tabelle:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'der Public-Variable einen Wert zuweisen:
lngZeile = ActiveCell.Row
'Makro ausführen:
Call Makro
End Sub

im Standardmodul:

Option Explicit
Public lngZeile As Long
Sub Makro()
MsgBox lngZeile
End Sub

2: ohne Public-Variable. Hier wird das Makro in Abhängigkeit der Variable aufgerufen:
Im Klassenmodul der Tabelle:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Makro ausführen
Call Makro(ActiveCell.Row)
End Sub

im Standardmodul:

Option Explicit
Sub Makro(lngÜbergabe As Long)
MsgBox lngÜbergabe
End Sub

die zweite Variante finde ich eleganter, zumal du hier auf die Public-Variable verzichten kannst.
Das geht natürlich auch beim Tabellenwechsel und nicht nur beim Worksheet-Change...
Gruß
Christoph
Anzeige
AW: Definition und befüllen von globalen Variablen
globalen
Hallo Christoph,
herzlichen Dank für Deine ausserordentlich ausführlichen Ausführungen.
GROSSE KLASSE!!! RESPEKT!!!
Werde mich mal versuchen nach Deinen Beispielen "durchzuhangeln".
....und dann den Erfolg melden.
Dir weiterhin frohes Schaffen!
gse (aka guenter siegfried eugen)
;)
Danke für die Rückmeldung (o.T.)
23.07.2004 12:41:05
Christoph

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige