Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel-Zelle greift auf globale Variable zu


Betrifft: Excel-Zelle greift auf globale Variable zu von: juhop
Geschrieben am: 20.10.2017 10:58:44

Hallo zusammen,

bekanntermaßen kann man einer Excel-Zelle (z.B. A1) den Wert einer anderen Zelle (z.B. B1) zuschreiben in dem man in die Zelle A1 "=B1" schreibt und wenn diese gefüllt wird, so wird die damit verbundene Zelle ebenfalls mit dem identischen Wert gefüllt.

Gibt es die Möglichkeit einer Zelle den Wert einer global definierten Variable zuzuweisen, sodass die Zelle den Wert der Variablen ausgibt, sobald die Variable gefüllt wird?

Wichtig dabei ist, dass die Variable nicht in die Zelle geschrieben wird sondern die Zelle die Variable eigenständig ausliest.

Vielen Dank und Gruß

  

Betrifft: mit einer UDF ... (owT) von: EtoPHG
Geschrieben am: 20.10.2017 11:13:43




  

Betrifft: AW: mit einer UDF ... (owT) von: juhop
Geschrieben am: 20.10.2017 13:20:56

Sorry, kann Du das bitte etwas erläutern? Ich verstehe es nicht ganz.

Also, wenn ich in VBA eine globale Variable z.B. Namens "Var1" definiert habe und dieser durch die Ausführung eines Makros ein Wert zugewiesen wurde, wie kann ich durch eine Excel-Zelle diesen Wert abfragen?

Gruß


  

Betrifft: Schau Dir doch alle AW an, vor Rückfragen, owT von: Michael (migre)
Geschrieben am: 20.10.2017 13:28:49




  

Betrifft: mit einer UDF ... (owT) von: EtoPHG
Geschrieben am: 20.10.2017 11:13:44




  

Betrifft: AW: Excel-Zelle greift auf globale Variable zu von: MatthiasG
Geschrieben am: 20.10.2017 11:14:43

Hallo juhop,

also Ansatz:
in ein allgemeines Modul:

Public global_var As Long

Function GetVar() As Long
Application.Volatile
GetVar = global_var
End Function
Dann kannst du in die Zelle "=GetVar()" schreiben, und sie wird bei jeder Berechnung aktualisiert.
Im VBA-Code kannst du das mit Application.Calculate erzwingen.


Gruß Matthias


  

Betrifft: AW: Excel-Zelle greift auf globale Variable zu von: juhop
Geschrieben am: 20.10.2017 13:48:19

Hallo Matthias, Vielen Dank für Deine Antwort.

Habe das mal eben so nachgebaut und kann eine Variable so tatsächlich aus VBA auslesen.

In meinem Fall existieren aber rund 20 Variablen sowie zweidimensionale Matrizen, die mit sehr vielen Werten gefüllt sind. Diese einzeln in Functions zu verpacken würde nicht funktionieren. Gibt es keine andere Möglichkeit aus einer Excel-Zelle direkt auf eine globale Variable zugreifen zu können?


  

Betrifft: AW: Excel-Zelle greift auf globale Variable zu von: MatthiasG
Geschrieben am: 20.10.2017 13:59:24

Hallo juhop,

hmm, man kann durch Application.Caller ermitteln, welche Zelle die Function aufgerufen hat:

Function GetVar() As Long
Dim z
Application.Volatile
Set z = Application.Caller
MsgBox z.Address
GetVar = global_var
End Function

Du könntest hier also abhängig von der aufrufenden Zelle den entsprechenden Wert zuurückgeben.

Allerdings ist diese Konstruktion ziemlich fragil (was passiert, wenn die Datenstruktur sich ändert? Du Zeilen/Spalten einfügen musst?). Vielleicht machst du es besser andersrum: Du hältst die Daten in der Tabelle und bearbeitest sie mit VBA. Dann schreibst du noch entsprechende Routinen, die die Daten aus den Tabellenblättern in die Variablen schreiben und umgekehrt. Vielleicht ist diese Vorgehensweise besser?

Grüße,
Matthias


  

Betrifft: AW: Excel-Zelle greift auf globale Variable zu von: EtoPHG
Geschrieben am: 21.10.2017 19:19:10

Hallo juhop,

Bei deinem angegebenen Level Excel & VBA gut habe ich angenommen, dass du weisst, was eine User Defined Function ist.
Jetzt muss ich meine Meinung revidieren, denn dein Zitat: Diese einzeln in Functions zu verpacken würde nicht funktionieren. Gibt es keine andere Möglichkeit aus einer Excel-Zelle direkt auf eine globale Variable zugreifen zu können? lässt mich daran zweifeln, dass du das Konzept und Zusammenspiel zwischen Excel und VBA verstehst. Du musst schon erläutern, woher denn deine Variablen und Matrizen kommen.

Gruess Hansueli


Beiträge aus den Excel-Beispielen zum Thema "Excel-Zelle greift auf globale Variable zu"