VBA-Variable an Seitenansicht eines Berichts

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

Report_Namensschild.UText = UText

End Sub


Freundliche Grüße
Mooooo

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.

MfG
Heinz Günther Naumann

Hallo Heinz Günther
Die Prozedur ist direkt im Report „Namensschild“ über VBA eingebunden.

Gruß Mooooo

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

funcNamenDrehen = UText

End Function

Vielleicht klappt es so.

Gruß
H.G. naumann

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)

Grüße Mooooo

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.

Gruß
H.G.Naumann

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?

Gruß
H.G.Naumann

Hallo,

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 Heinz Günther Naumann,
danke für deine ANtwort,
die Namen kommen aus einer Abfrage und deshalb kann ich sie nicht manuell eingeben

Gruß Mooooo

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

Hallo Heinz,
danke es geht jetzt alles und VBA wird auch ausgeführt,
weiß zwar nicht warum, ist mir aber auch egal.

Danke
Gruß Mooooo