Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1284to1288
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
Inhaltsverzeichnis

Prozedur in globale Funktion umwandeln

Prozedur in globale Funktion umwandeln
20.11.2012 09:56:32
Till
Hallo zusammen,
ich möchte gerne eine Prozedur in eine globale Funktion umwandeln, so dass ich diese in jedem beliebigen Modul verwenden kann, um nicht den Pfad immer neu ermitteln zu müssen.
Geht das überhaupt?
Was ich habe ist folgendes:

  • Option Explicit
    Public tPath As String
    ' das war ein erster Versuch der nichts brachte, da tPath außerhalb dieses Moduls natürlich "leer" war.
    Sub Auslesen()
    Dim WSHShell
    Set WSHShell = CreateObject("Wscript.Shell")
    Dim sPath As String
    'Jetbase
    sPath = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App  _
    Paths\jetbasel.exe\")
    Dim i As Integer
    Dim si As Variant
    tPath = Left(sPath, Len(sPath) - 12) & "JEX\jex.txt"
    'MsgBox tPath
    End Sub
    


  • Was ich bewirken will ist, dass ich den Pfad zu "jex.txt" also "tPath" als globale Variable überall, also auch in den "benachbarten Modulen, verwenden möchte.
    Wie stelle ich das an? Geht das über eine globale Funktion?
    Ich hoffe, Ihr könnt mir hier weiterhelfen!
    Danke schon mal!
    Lb. Gruß
    Till

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Prozedur in globale Funktion umwandeln
    20.11.2012 10:09:05
    ChrisL
    Hi Till
    tPath ist global deklariert und somit bereits jetzt überall verfügbar.
    Funktion würde in etwa (beispielhaft) so aussehen:
    Function Auslesen() As String
    Auslesen = "x"
    End Function
    

    Sub test()
    MsgBox Auslesen
    End Sub
    

    cu
    Chris

    AW: Prozedur in globale Funktion umwandeln
    20.11.2012 10:10:18
    Till
    Danke... Deine Lösung ist in der Tat ein wenig eleganter.
    Gruß Till

    AW: Prozedur in globale Funktion umwandeln
    20.11.2012 10:09:09
    Till
    Hi,
    hab's (glaube ich) doch noch alleine hinbekommen:

  • Public sPath As String
    Function Pfad() As String
    Dim WSHShell
    Set WSHShell = CreateObject("Wscript.Shell")
    sPath = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App  _
    Paths\jetbasel.exe\")
    Pfad = Left(sPath, Len(sPath) - 12) & "JEX\jex.txt"
    End Function
    

  • Oder geht das noch eleganter?
    Gruß Till

    Anzeige
    AW: Prozedur in globale Funktion umwandeln
    20.11.2012 10:10:34
    ChrisL
    Hi Till
    sPath musst du jetzt nicht mehr global deklarieren.
    Gruss
    Chris

    Eine Public Procedure ist in jedem Modul der ...
    20.11.2012 10:16:03
    Luc:-?
    Standort-Mappe verfügbar, Till,
    egal ob Subroutine oder Funktion (mal in der VBE-Hilfe nachlesen!). Eine beim Mappenstart oder per Button aufgerufene Prozedur zur Füllung einer globalen Public-Variablen, die nur 1x in einem allgemeinen Modul der Mappe deklariert wdn darf, füllt diese für eine ganze xlSitzung mit dieser Mappe, falls man nicht zwischendurch PgmVeränderungen, speziell an GlobalVariablen, vornimmt. Dadurch kann sie nämlich entladen wdn.
    Ansonsten dürfte es bei dem von dir Gezeigten nicht schwierig sein, daraus eine Fktsproz zu machen. Du brauchst im Kopf nur Public Function zu schreiben (aber Public Sub reicht sicher auch, falls du keinen Rückgabewert brauchst → ebenfalls nachlesen!).
    Gruß Luc :-?
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige