Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular um Funktion bzw. Subroutine erweitern

Begonnen von Schlibbi, Februar 03, 2013, 15:20:59

⏪ vorheriges - nächstes ⏩

Schlibbi

Grund:
Ich habe mir ein Formular erstellt um eine wenig mit Strings zu üben, und mich an VBA zu gewöhnen.
Denn ich möchte Daten aus einer Textdatei einlesen und mir Werte rausziehen, die Daten sind leider nicht in Tabellenform egal.

Problem:
Ich wollte mir eine Soubroutine machen welche mir ein wenig Tipparbeit erleichter, und mir eine Zeichenkette zu meinem Textfeld hinzufügt
Private Sub writeToScratchPad(strData As String, newLine As Boolean)
'edtScratchPad ist ein Textfeld auf besagtem Formular
    edtScratchPad.Value = edtScratchPad.Value & strData
   
    If newLine Then
        edtScratchPad.Value = edtScratchPad.Value & vbCrLf
    End If
   
End Sub


Das Problem ist die müsste ich eigenltich in die Klasse meines Formulars packen, um sie dann mit
Me.writeToScratchPad(...) bei einem Ereigniss zu nutzen, nur wie mache ich das bei Access?

Achja VBA und Access sind neu für mich, kenne mich ein wenig C++,und C#

DF6GL

Hallo,



um die Routine aufzurufen, benötigst Du ein auswertbares Ereignis im Form, das eine Ereignisprozedur anstößt.

z. B. beim Klick auf eine Schaltfläche ("btnWriteScratch"):

Sub btnWriteScratch_Click()
Call writeToScratchPad ("Das ist mein Text", True)
End Sub

Etwas korrigierter Code:

Private Sub writeToScratchPad(strData As String, newLine As Boolean)
'edtScratchPad ist ein Textfeld auf besagtem Formular
    Me!edtScratchPad.Value = Me!edtScratchPad.Value & strData   ' ME!    ("This"!!) nicht vergessen , aber auch nur, wenn die Sub im akt. Formularklassenmodul steht,  Value ist Default
   
    If newLine Then
        Me!edtScratchPad = Me!edtScratchPad & vbCrLf
    End If
   
End Sub




Insgesamt hat diese SUB aber eher keinen großen Vorteil (vom Üben mal abgesehen)  weil der eigentlich relevante Code gleich in die beispielhafte Ereignisprozedur geschrieben werden könnte:



Sub btnWriteScratch_Click()

Dim strData as String
strData = "Das ist mein Text"   ' nur als Beispiel, um zu einem Wert für strData zu kommen.


Me!edtScratchPad = Me!edtScratchPad &  strData  '  m. E. eher so:  Me!edtScratchPad = Me!edtScratchPad &  vbCrLf & strData 
' oder     Me!edtScratchPad = Me!edtScratchPad & vbCrLf     'falls das an dieser Stelle gewünscht und überhaupt sinnvoll ist

End Sub