Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Formulare erstellen per VBA incl. Felder + Code
zurück: Access-Entwickler-Konferenz (AEK 9) weiter: Access Formular mit Code erstellen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Pino
ACCESS-Einsteiger


Verfasst am:
15. Feb 2007, 17:08
Rufname:

Formulare erstellen per VBA incl. Felder + Code - Formulare erstellen per VBA incl. Felder + Code

Nach oben
       Version: Office 2003

Hallo,

ich weiss nicht, ob es irgendjemanden interessiert, aber da ich selber nen bissl Zeit dafür aufgewendet habe, wollte ich mal ein Beispiel geben.

In diesem Beispiel wird ein Formular erzeugt, welches eine Anzahl von Textfeldern hat (über Eingabe gesteuert). Die Textfelder werden automatisch mit einem Code hinterlegt.
Im neuen Formular können die Textfelder mittels Maus per Linksklick bewegt und per Rechtsklick vergrößert / verkleinert werden.
Code:
Option Compare Database
Option Explicit

Public Sub Formular_Erstellen()
    Dim ctl         As Control
    Dim frm         As Form
    Dim strfrm      As String
    Dim strCode     As String
    Dim strFeldName As String
    Dim t, iAnzahl  As Integer
   
    iAnzahl = Val(InputBox("Wie viele Textfelder soll das neue Formular " & _
                           "enthalten?", _
                           "Formular-Generator-Beispiel by Pino", "20"))
    Set frm = Application.CreateForm
    strfrm = frm.Name
    For t = 1 To iAnzahl
        Set ctl = CreateControl(strfrm, acTextBox, acDetail, "", "", _
                                100, t * 200, 1000, 200)
        strFeldName = "Feld" & Format(t, "000")
        ctl.Name = strFeldName
        strCode = "Private Sub " & strFeldName & _
                        "_MouseDown(Button As Integer, Shift As Integer, " & _
                                   "X As Single, Y As Single)" & Chr(13) & _
                  "    If Button = 1 Or Button = 2 Then" & Chr(13) & _
                  "        xpos = X" & Chr(13) & _
                  "        ypos = Y" & Chr(13) & _
                  "    End If" & Chr(13) & _
                  "End Sub" & Chr(13) & Chr(13)
        strCode = strCode & _
                 "Private Sub " & strFeldName & _
                        "_MouseMove(Button As Integer, Shift As Integer, " & _
                                   "X As Single, Y As Single)" & Chr(13) & _
                  "    If Button = 1 Then" & Chr(13) & _
                  "        If xpos <> X Then" & Chr(13) & _
                  "            If Me!" & strFeldName & _
                                    ".Left + X - xpos <= 0 Then" & Chr(13) & _
                  "                Me!" & strFeldName & ".Left = 0" & _
                                                                   Chr(13) & _
                  "              Else" & Chr(13) & _
                  "                Me!" & strFeldName & ".Left = Me!" & _
                                strFeldName & ".Left + X - xpos" & Chr(13) & _
                  "            End If" & Chr(13) & _
                  "        End If" & Chr(13) & _
                  "        If ypos <> Y Then" & Chr(13) & _
                  "            If Me!" & strFeldName & _
                                     ".Top + Y - ypos <= 0 Then" & Chr(13) & _
                  "                Me!" & strFeldName & ".Top = 0" & _
                                                                   Chr(13) & _
                  "              Else" & Chr(13) & _
                  "                Me!" & strFeldName & ".Top = Me!" & _
                                 strFeldName & ".Top + Y - ypos" & Chr(13) & _
                  "            End If" & Chr(13) & _
                  "        End If" & Chr(13)
        strCode = strCode & _
                  "    ElseIf Button = 2 Then" & Chr(13) & _
                  "        If xpos <> X Then" & Chr(13) & _
                  "            If Me!" & strFeldName & _
                                   ".Width + X - xpos <= 0 Then" & Chr(13) & _
                  "                Me!" & strFeldName & ".Width = 0" & _
                                                                   Chr(13) & _
                  "              Else" & Chr(13) & _
                  "                Me!" & strFeldName & ".Width = Me!" & _
                               strFeldName & ".Width + X - xpos" & Chr(13) & _
                  "            End If" & Chr(13) & _
                  "            xpos = X" & Chr(13) & _
                  "        End If" & Chr(13) & _
                  "        If ypos <> Y Then" & Chr(13) & _
                  "            If Me!" & strFeldName & _
                                  ".Height + Y - ypos <= 0 Then" & Chr(13) & _
                  "                Me!" & strFeldName & ".Height = 0" & _
                                                                   Chr(13) & _
                  "              Else" & Chr(13) & _
                  "                Me!" & strFeldName & ".Height = Me!" & _
                              strFeldName & ".Height + Y - ypos" & Chr(13) & _
                  "            End If" & Chr(13) & _
                  "            ypos = Y" & Chr(13) & _
                  "        End If" & Chr(13) & _
                  "    End If" & Chr(13)
        strCode = strCode & _
                  "End Sub" & Chr(13)
        frm.Module.AddFromString strCode
    Next t
    frm.Module.AddFromString "Option Explicit" & Chr(13) & _
                             "Public xpos As Single" & Chr(13) & _
                             "Public ypos As Single" & Chr(13)
    DoCmd.Close acForm, strfrm, acSaveYes
    DoCmd.OpenForm strfrm
End Sub

MfG Pino
Willi Wipp
Moderator


Verfasst am:
15. Feb 2007, 18:19
Rufname:
Wohnort: Raum Wiesbaden

Re: Formulare erstellen per VBA incl. Felder + Code - Re: Formulare erstellen per VBA incl. Felder + Code

Nach oben
       Version: Office 2003

Hi Pino,

da hast Du Dir ja ganz schoen viel Arbeit gemacht.
Habe den Prozedurnamen geaendert, auf Public gesetzt und den Code etwas umformatiert. Wink
Ein kleines Problem gibt es aber noch, wenn Option Explicit in der Db automatisch gesetzt wird,
dann erstellt Dein Code ihn ein zweites Mal.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Pino
ACCESS-Einsteiger


Verfasst am:
16. Feb 2007, 00:07
Rufname:


AW: Formulare erstellen per VBA incl. Felder + Code - AW: Formulare erstellen per VBA incl. Felder + Code

Nach oben
       Version: Office 2003

Hintergrund ist, dass ich einen "Reportgenrator" schreiben soll und den Report vorher als Formular erzeuge und ihn dort anpassen kann.

Das mit dem "Option Explicit" stimmt, wird bei mir aber nicht automatisch gesetzt, daher hatte ich es mit rein genommen.
Wollte es nur mal posten, falls jemand sowas, oder etwas ähnliches sucht.

Ich hatte den Code direkt nem Button hinterlegt. Selbstverständlich kann man es auch als Funktion hinterlegen. Ist vielleicht sogar besser, da man es dann 1. von verschiedenen Stellen aus aufrufen kann und 2. in ne MDE packen um so den Quellcode vor unerlaubten Zugriff zu schützen (weil die aktuelle MDB kann man nicht in eine MDE wandeln, da dort diese Funktionen nicht mehr unterstützt werden)

MfG Pino
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Berechnende Felder in einer Abfrage 1 schnecke 881 23. Nov 2004, 02:20
mapet Berechnende Felder in einer Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Per SQL maximalen Spaltenwert im VBA code ermitteln 2 Gast 4779 31. Okt 2004, 23:10
Tom2002 Per SQL maximalen Spaltenwert im VBA code ermitteln
Keine neuen Beiträge Access Tabellen & Abfragen: Summer einzelner Felder mittels Abfrage ???? 1 slow 688 05. Okt 2004, 09:29
TommyK Summer einzelner Felder mittels Abfrage ????
Keine neuen Beiträge Access Tabellen & Abfragen: Zu viele Felder in der Tabelle 4 Sephyra 487 16. Sep 2004, 13:12
Sephyra Zu viele Felder in der Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Einen Wert per Abfrage in mehreren Tabellenspalten suchen 2 Danny G. 606 10. Sep 2004, 18:22
Danny G. Einen Wert per Abfrage in mehreren Tabellenspalten suchen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage soll leere Felder überspringen 1 spooky 904 25. Aug 2004, 10:31
Pusteblume Abfrage soll leere Felder überspringen
Keine neuen Beiträge Access Tabellen & Abfragen: 24 felder aus 1 DS in 24 versch. Datensätze kopieren. 3 Mirko 593 30. Jul 2004, 13:55
Willi Wipp 24 felder aus 1 DS in 24 versch. Datensätze kopieren.
Keine neuen Beiträge Access Tabellen & Abfragen: sql neue tabelle erstellen 3 Gast 1232 19. Jul 2004, 23:09
lothi sql neue tabelle erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle per button öffnen 1 Lordoo 1454 14. Jul 2004, 14:05
lothi Tabelle per button öffnen
Keine neuen Beiträge Access Tabellen & Abfragen: Relativ komplexes PRoblem mit erstellen von Datensätzen 5 feri 808 02. Jun 2004, 14:21
stpimi Relativ komplexes PRoblem mit erstellen von Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: Sortierung zweier PLZ Felder 4 maass 585 19. Mai 2004, 09:23
Willi Wipp Sortierung zweier PLZ Felder
Keine neuen Beiträge Access Tabellen & Abfragen: Berechnete Felder überschreiben 4 tine 677 12. Mai 2004, 10:42
tine Berechnete Felder überschreiben
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen