Hallo liebe WER-WEISS-WAS Gemeinde,
ich beschreibe wie folgt mein Problem:
Ich habe Access 2010. Dort gibt es ein Formular.
Auf diesem Formular ist ein Button und zwei Textfelder.
In diese zwei Textfelder Kommt die Nummer des Kurses und eine laufende Nummer hinein.
Wenn ich die eintrage und dann auf den Button drücke, wird ein Bericht generiert, der zu allen Teilnehmern des Kurses Namensschilder erstellt. Der Untere Text in dem Bericht ist demnach richtig herum und der obere spiegelverkehrt und umgedreht (mach ich per VBA und einer bestimmten Schriftart).
Wenn ich also jetzt auf den Button drücke, öffnet er mir die Seitenansicht, was auch richtig ist.
Er führt aber nicht den VBA-Code aus der das obere Textfeld mit dem umgedrehten Namen füllt.
Er macht es nur wenn ich mindestens einmal in die ENtwurfsansicht wechsle.
Ich glaube es ist die falsche Prozedur, aber ich weiß nicht welche richtig wäre.
Hier der Code:
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
Dim UText, Text As String
Dim A(20) As String
Dim I As Long
Text = Report_Namensschild.Text
I = 1
For I = 1 To Len(Trim(Text))
A(I) = Mid$(Text, I, 1)
Next I
UText = „“
Do Until I = 0
I = I - 1
UText = UText + A(I)
Loop
Hallo Mooooo,
Deine Prozedur ist ok und dreht den Namen korrekt um.
Das Problem ist ja wohl nicht die Prozedur ansich, sondern, wenn ich diese richtig verstehe wird sie nicht ausgeführt?
Warum nicht kann ich jedoch nicht sagen, dazu fehlt mir die Information, wie dies Prozedur in Deinem Programm eingebunden ist.
Hallo Mooooo,
Ok.
Ich hab aus Deiner Sub mal eine Function gemacht.
In deiner Sub wurden noch CANCEL und FORMAT_COUNT übergeben, aber nicht genutzt. Hatte dies einen Sinn?
Eventuell muss die Prozedur noch PUBLIc erklärt werden.
Private Function funcNamenDrehen(Report_Namensschild As String) As String
Dim UText As String, Text As String, A(20) As String, I As Byte
Text = Trim(Report_Namensschild)
I = 1
For I = 1 To Len(Text)
A(I) = Mid$(Text, I, 1)
Next I
UText = „“
Do Until I = 0
I = I - 1
UText = UText + A(I)
Loop
Hallo Heinz Günther Naumann,
danke dür den Vorschlag.
Ja ich kenne mich noch nicht so gut in VBA aus.
Ich habe jetzt nur noch eine Frage: Wie schreibe ich in das Textfeld, dass es die Funktion nehmen muss?
Beispiel: =funcNamenDrehen([Text]) (klappt aber nicht)
Hallo Mooooo,
jetzt bin ich etwas verwirrt.
Wo sind denn die Namen gespeichert?
Du musst doch irgendwie den Report erstellen.
(Mit Reports kenne ich mich nicht gut aus, da ich alle Druckroutinen selbst schreibe.)
Man schreibt jedoch nicht in ein textfeld, dass es eine funktion ausführen soll.
Hallo Heinz Günther,
Ich meinte nur, was die Funktion ausführen soll. Ich dachte da halt, das das Textfeld sie ausführt. Ich kann es natürlich auch anders machen.
Aber igrendetwas muss doch die Funktion ausführen.
Und drucken macht der ser selber.
Gruß Mooooo
Hallo Mooooo,
die funktion dreht einen text um, der ihr in der variable „Text“ übergeben wird.
Nimm ein neue´s Formular und plaziere ein textfeld und einen Button.
Das Textfeld benenne „TB_Textfeld“
Füge die function mit in den codeteil ein.
In das Clickereignis des buttons schreibe
„TB_textfeld.text = funcNamenDrehen(tb_textfeld.text)“
Starte dsa Programm, schreibe irgendetwas in das Textfeld und clicke den button. Der Text sollte sich jetzt immer ändern.
Das macht die Function.
Wo sind denn die Namen gespeichert?
Wie erstellst Du denn den Report?
Druckt der Report denn überhaupt die Namen normal aus?
ich glaube nicht, dass dein Code überhaupt das macht, was du möchtest. Durch umdrehen der Buchstabenreihenfolge wird noch lange kein gespiegelter Text erzeugt.
z.B.
Max Mustermann
wird zu
nnamretsuM xaM
Außerdem glaube ich, dass du keinen gespiegelten, sondern einen um 180° gedrehten Text (auf den Kopf gestellt) brauchst.
Dazu musst du nur das Textfeld am Report entsprechend drehen.
Hallo Tom,
der Text wird so gedreht wie es sein soll.
Was nr noch nicht funktioniert, ist dass ich mindestens einmal in die ENtwurfsansicht wechslen muss damit er den VBA Code ausführt
Gruß Mooooo