Hallo,
ich möchte in mehreren Formularen so ein ähnliche Sub nutzen:
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
ctl.Locked = True
Next
End Sub
Nun möchte ich aber sehr gern dies in ein Modul auslagern und beispielsweise einfach über den Call Befehl aufrufen. Mein Problem ist, dass ich mich mit den Variablentypen nicht auskenne und ich auch nirgends vernünftige Variabel-Programmbeispiele finde die man sich mal anschauen kann und die das erklären.
Problem bei den Modulen ist ja, dass hier der me.controls Befehl nicht ausgeübt werden kann. Dieses Me.Controls muss also sicher über eine öffenliche Variable an das Modul transferiert werden um dort als Variable ausgeführt werden zu können.
Ziel ist, dass ich einfach von beliebigen Formularen aus das Modul aufrufen möchte und dadurch alle Felder gesperrt werden sollen ohne jedesmal den gleichen Code in das Formular selbst schreiben zu müssen.
PS: Woher bekomme ich eine gute Anleitung, wie man mit Variablen umgeht. Man kann ja ganze Datenbanken in Variablen darstellen, aber ich brauche da eine gute Einführung..
Danke :-*
datekk
Hallo,
um diese lokale Prozedur "global" zur Verfügung zu stellen , muss der Code zunächst in ein Standard-Modul platziert und als Public (mit "vernünftigen" Namen) deklariert werden.
Die Prozeduren (Funktionen und Subs) haben Argumente (Variablen-Liste in der Kopfzeile mit Datentyp-Deklaration) , die als "Verbindungskanäle" zwischen dem Prozedurcode und der aufrufenden Codezeile fugieren (dort "Parameter" genannt).
ZitatPublic Sub LockControls(MyForm as Form) ' Sub akzepiert ein Form-Objekt
Dim ctl As Control
For Each ctl In MyForm.Controls
ctl.Locked = True
Next
End Sub
und Aufruf:
Sub Form_Load()
Call LockControls (Me) ' hier wir das akt. Form-Objekt als Parameter mitgegeben
End Sub
In dieser Fu
Hallo,
dazu möchte ich zu bedenken geben, dass nicht jedes Steuerelement die Eigenschaft "Locked" hat. Es müsste also entweder die Abfrage des ControlType oder eine Fehlerbehandlung hinzugefügt werden.
Ok danke. Da komme ich erstmal weiter. Aber eine Frage, warum muss vor der Sub "Public" stehen. Wenn ich es weg lasse, funktioniert es auch.
Hi,
Public ist die Default-Einstellung.