| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: auf Variablen von Public zugreifen (1136 mal gelesen)
|
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 06. Feb. 2004 09:07 <-- editieren / zitieren --> Unities abgeben:
Hallo ich habe folgendes kleines Problem, da ich noch absoluter VBA Anfänger bin. Ich möchte auf eine Variable mehrmals von einem Formular aus auf eine Variable in einem Modul zugreifen. Das ganze hat folgenden Hintergrund: Ich habe ein Formular in dem ich Dateipfade anzeigen möchte und beim klicken auf einen Button neben dem jeweiligen Verzeichnis möchte ich auf das Modul zugreifen wo ich bequem per Maus einen Pfad irgendwo auf der Festplatte festlegen kann. Dann soll die Variable aus dem Modul "strPath" in der jeweiligen Zeile nach drücken von OK erscheinen. Die Variable befindet sich in einem Public Sub unter Modul 1. Geht das überhaupt so mehrfach von dem Dialog die Felder unterschiedlich in meinem Formular auszufüllen? Beispiel für Userform im Anhang, die Optik von dem Modul entspricht dem Windows Explorer.
------------------ < Was man nicht im Kopf hat, daß hat man in den Beinen. > Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 06. Feb. 2004 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo, ich würde das ganze als Funktion schreiben und dieser dann das jeweilige Textfeld mitgeben, wo dann der Wert reingeschrieben wird. In irgendeinem Projekt hatte ich mal solchen Dialog, find ich aber gerade nicht ... ;( Da gibts doch auch zwei von den Dialogen, den mit Dateien und dann, wo nur die Ordner sind, oder? Gruß TP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 06. Feb. 2004 10:03 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von BloodyMess: Hallo,ich würde das ganze als Funktion schreiben und dieser dann das jeweilige Textfeld mitgeben, wo dann der Wert reingeschrieben wird. In irgendeinem Projekt hatte ich mal solchen Dialog, find ich aber gerade nicht ... ;( Da gibts doch auch zwei von den Dialogen, den mit Dateien und dann, wo nur die Ordner sind, oder? Gruß TP
Hallo TP Wie meinst Du das mit dem die ganze Funktion dem Textfeld mitgeben? Ich wollte wenn möglich nur einmal die Funktion benutzen mit der ich das Verzeichnis auswählen kann. Die Möglichkeit die Funktion für jeden einzelnen Pfad wieder und wieder zu kopieren empfinde ich als unelegant, außerdem basiert das ganze darauf, daß recht viele Einstellungen mit diesen Pfad gemacht werden sollen. Das wird auch schon soweit alles dann in einer Textdatei festgehalten. Nur wollte ich halt möglichst nur einmal diese Funktion schreiben und von verschiedenen Stellen aus benutzen, wenn so etwas überhaupt so einfach geht? Bei dem verwendeten Modul gibt es leider nur den Dialog zum auswählen von Verzeichnissen. Aber das reicht ja auch für den Zweck erstmal. Gruß Dressler
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 06. Feb. 2004 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo, Du redest doch selber schon von Funktion. Ein Funktion schreibt man sich nur einmal und Du kannst Sie dann bei gebrauch ständig aufrufen. Code: Function DeinFunktionsName(Übergabeparameter mit Deklaration zB. b as double) as (was die Funktion zurückgeben soll, muß aber nicht) ... end Function
aufruf aus dem Programmcode : DeinFunktionsName (Übergabewert) wenn er meckert, dann streich die Klammern.
Gruß TP
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 06. Feb. 2004 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
wenn ich's richtig verstanden habe könnte das vielleicht so gehen: Sub Command1_Click() getFolder(textBox1) End Sub Sub Command2_Click() getFolder(textbox2) EndSub Function getFolder(pathbox as control) ..."Pfad Code" etc. pathbox.value="Pfad" End Function
Habs jetzt nur mal so reingehauen, vielleicht musst Du die Textbox als Object in der Funktion deklarieren oder ggf. aus der Funktion mit FormName.TextBoxName.Value="Pfad" füllen. Gruss, Harry
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 06. Feb. 2004 11:26 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, nun ist das Wochenende vorbei und ich bin mit allem weiter gekommen. Danke nochmals für die Tips. Von jetzt an werd ich etwas mehr ausprobieren.... Danke erstmal euch beiden für die Tips. Ich werde das nachher mal in die Tat umsetzen und dann mal schreiben wie und ob ich voran komme. Gruß Dressler [Diese Nachricht wurde von Dressler am 09. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 12. Feb. 2004 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo Dressler, bin gerade am aufräumen von meinem PC und da bin ich über die Function gestolpert, die Du hier mal gesucht hattest. Vielleicht geht´s ja auch einfacher, aber ich hab es damals so gemacht. Hab´s glaub aus nem Access-Forum raus. du startest einfach die sub start_test(), wählst dann deinen Ordner aus und der steht dann in der Variable strpath in der Funktion drinnen, welcher im Direktfenster (strg + g) ausgegeben wird, den könntest Du ja dann hier in deine textfelder eintragen lassen. Code:
Option ExplicitPublic Type BROWSEINFO hOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As Long iImage As Long End Type Const MAX_PATH = 2600 Declare Function SHBrowseForFolder Lib "shell32.dll" _ Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long Declare Function SHGetPathFromIDList Lib "shell32.dll" _ Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _ ByVal pszPath As String) As Long Sub test_start() ReturnFolder End Sub Public Function ReturnFolder() As String Dim Browser As BROWSEINFO Dim lngFolder As Long Dim strPath As String With Browser .hOwner = 0& .lpszTitle = "Verzeichnis wählen" .pszDisplayName = String(MAX_PATH, 0) End With strPath = String(MAX_PATH, 0) lngFolder = SHBrowseForFolder(Browser) SHGetPathFromIDList lngFolder, strPath strPath = Left(strPath, InStr(strPath, vbNullChar) - 1) Debug.Print strPath End Function
Gruß TP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |