Globale Variable

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

Betrifft: Globale Variable
von: Sven
Geschrieben am: 12.08.2015 17:12:09

Hallo,
ich habe folgende Problematik und stehe auf dem Schlauch:
Ich möchte aus sämtlichen (Public) Sub's in meinem Projekt, einen Zähler für einen Status setzen - 1 für in Arbeit, 2 für freigegeben. Das soll dann über eine Funktion den entsprechenden Text in eine bestimmte Zelle schreiben. Ich habe es erst mit einer globalen Variablen versucht, die ich der Funktion übergeben habe, aber die Funktion wird nicht angesprochen. Wenn ich die Funktion direkt ansprechen, bekomme ich die Rückmeldung, dass ein Objekt erforderlich ist.
IPVersion möchte ich in den SUBs als Zähler für den Status verwenden.

Function IPversion()
    If IPversion = 0 Then
        Sheets(Tab1).range("B2").Value = "in Arbeit"
    ElseIf IPversion = 1 Then
        Sheets(Tab1).range("B2").Value = "freigegeben"
    End If
End Function

Gruß
Sven

Bild

Betrifft: AW: Globale Variable
von: Michael
Geschrieben am: 13.08.2015 14:33:06
Hi Sven,
was Du da zeigst, ist *keine* Funktion, denn eine Funktion ist dadurch definiert, daß sie einen Wert zurückgibt.

Function ausgabe() As String
  ausgabe = "Hello World!"
End Function
Sub fct_aufrufen()
  MsgBox ausgabe
End Sub
Globale Variablen funktionieren grundsätzlich, aber sie "speichern" Werte nicht über das Schließen und erneute Öffnen der Datei hinweg.
Der einfachste Weg (mit "Basiskenntnissen") ist, ein (evtl. verstecktes) Blatt zu reservieren und die Infos dorthin zu schreiben.
Ich habe Dein Programm mal verallgemeinert; das gehört in ein Modul:
Option Explicit
Public Sub WerteSchreiben(ByVal Tab1 As Long, ByVal IPversion As Long, ByVal Adresse As String)
    If IPversion = 0 Then
        Sheets(Tab1).Range(Adresse).Value = "in Arbeit"
    ElseIf IPversion = 1 Then
        Sheets(Tab1).Range(Adresse).Value = "freigegeben"
    End If
End Sub
Sub Sub_aufrufen()
  Call WerteSchreiben(1, 1, "B2")
End Sub

Die Zeile mit dem Call kannst Du in jeder beliebigen Sub verwenden.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Globale Variable
von: Sven
Geschrieben am: 14.08.2015 10:28:39
Hi Michael,
perfekt, klappt super!! Danke!
Mich interessiert aber mal, wie es der Profi gemacht hätte, wenn ich nicht über den Umweg einer zusätzlichen Tabelle gegangen wäre - ich will ja auch dazu lernen ;).
Grüße
Sven

Bild

Betrifft: man lernt nie aus
von: Michael
Geschrieben am: 14.08.2015 13:02:49
Hi Sven,
ich nehme mir immer vor, interessante Threads gleich zu speichern, mache es dann aber doch nie.
Erst vor ein paar Tagen ging es um ein ähnliches Thema, aber ich kann mich nur noch erinnern, daß es um ein Add-In ging.
Na, gefunden habe ich auf die Schnelle:
https://www.herber.de/forum/archiv/480to484/480069_Kann_man_Arrayinhalte_dauerhaft_speichern.html
insbesondere die Beiträge unten von andre (allg, eben auch add-in) und insbesondere Nepomuk.
Gugel mal: excel vba variablen dauerhaft speichern
Genau, registry geht natürlich auch, oder eine externe Textdatei (á la .ini) oder oder
Schöne Grüße,
Michael

Bild

Betrifft: doch noch was gefunden
von: Michael
Geschrieben am: 14.08.2015 13:31:45
https://www.herber.de/forum/archiv/680to684/680930_CustomDocumentProperties_Co.html

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Globale Variable"