Neuigkeiten:

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

Mobiles Hauptmenü

Problem mit der Formatierung der Textbox

Begonnen von accessy, Oktober 14, 2012, 00:56:47

⏪ vorheriges - nächstes ⏩

accessy

In meiner Textbox steht der Ausdruck

=100*([Text375])/([Text363])-100

Somit erhalte ich die Differenz in Prozent.

Wenn ich aber

=100*([Text375])/([Text363])-100 & " %"

nehme, erscheint zwar das Prozentzeichen dahinter, aber dafür ist die Formatierung auf 2 Stellen wieder hin;
es erscheint eine Fließkommazahl.
Eigentlich bräuchte ich ja nur das Format Prozent wählen, aber dann ist jedesmal der Wert falsch.

Gebe ich im Feld Format das hier ein

#.##0,00[Schwarz];-#.##0,00[Rot]

ist es auch alles richtig berechnet.

Mache ich aber auch hier die Sache mit dem Prozentzeichen, ist alles wieder hin.

#.##0,00 %[Schwarz];-#.##0,00 %[Rot]

Kann mir jemand auf die Sprünge helfen die Differenz mit einem ordentlichen %-Zeichen dahinter zu erhalten?

bahasu

#1
Hi Achim,

hast Du schon den Format-Befehl versucht?

Steuerelementinhalt :    =Format([A]/[C];"#,00%")

Harald
Servus

accessy

Moin Moin Harald,

so eine ähnliche Sache probierte ich schon mal.
Das geht aber nicht.

Gebe ich die Formel so wie du es vorgibst ein, dann erscheint als Lösung 97%.
Das ist leider falsch, oder besser gesagt nicht das, was ich angezeigt haben will.
Denn in Wirklichkeit sind es -3%
Deshalb hatte ich ja meine Formel wie eingangs zu sehen ist genommen.

Aktueller Wert für TextA = 672.760
Aktueller Wert für TextB = 693.405


=100*([TextA])/([TextB])-100

Das entspricht einem Minus von 2,98%

bahasu

#3
Hi,

dann so: =Format([a]/[C]-1;"#.00%")

Harald

Nachtrag:
beim Verwenden von b als Variablennamen, findet eine ungewollte Formatierung des Textes statt => habe das "b" in der Formel in "c" getauscht.
Servus

accessy

Uiii Harald,

das geht ja gar nicht.
Wenn ich das in das Feld Format eingebe, das Feld verlasse,
wird alles eingegebene in dem Feld Format in Kraut und Rübensalat verwandelt.
Und als Resulat kommt nur noch Mist bei raus.

Ich denke, ich werde wohl auf das %-Zeichen verzichten müssen.
Geht ja so auch, sieht bloß blöd aus.

bahasu

Hi Achim,

mir ist nicht klar, warum mit obiger Formel "totales Chaos" einsetzt.
Siehe Anhang (unten links ;D): die formel wird in einem ungebundenem Steuerelement angewendet (Berechnungen speichert man nicht).

Harald

[Anhang gelöscht durch Administrator]
Servus

accessy

Vielleicht lag es daran, dass ich vergaß das Feld Formatierung leer zu machen.
Okay, ich bin jetzt wieder einen Schritt weiter.
Das funktioniert jetzt was die Zahlenwerte betrifft.

Aber leider nicht in ROT wenn Minus

Das hier steht jetzt drin im Steuerelementeinhalt:

=Format([A])/([B])-1;"#.00 [Schwarz];-#.00 [Rot] %")

Fehler gibt es keinen, der Minuswert ist in schwarz.
Hast du dafür auch einen Tipp?

bahasu

Hi Achim,

im Formular beim Ereignis "Beim Öffnen" trägst Du ein:

Private Sub Form_Open(Cancel As Integer)
    Dim oFmtC As FormatCondition

    Me.Text4.FormatConditions.Delete
       
    Set oFmtC = Me.Text4.FormatConditions.Add(acExpression, , "A < B")
    Me.Text4.FormatConditions(0).ForeColor = 255
End Sub


Me.Text4 musst Du bitte durch den Namen Deines Feldes erstzen, das die Prozent-Rechnung durchführt.
"A" und "B" bitte durch die Namen Deiner Felder ersetzen.

Demo-Beispiel im Anhang.

Harald




[Anhang gelöscht durch Administrator]
Servus

accessy

Hallöchen Harald,

im Formular steht für "Beim Öffnen" als Eintrag "Ereignisprozedur"
Das bedeutet wohl, es gibt einen VBA Code.

Aber ich finde keinen, wenn ich unter Module nachschaue.
Module ist leer. Nichts drin.

Ich suche sowieso gerade etwas wie in Excel, nämlich ein Workbook_Open Ereignis.
Das gibt es hier in Access scheinbar gar nicht.
Ich habe nämlich einen ToggleButton eingebaut, der beim Öffnen des Formulars einen Ausgangsstatus haben soll.
Alle DS sind beim Öffnen des Formulars gesperrt. Erst, wenn ich den Toggle eindrücke, sind sie auf Edit.
Das funktioniert prima.

Dieses Ausgangsstaus "Caption="Gesperrt" hat er aber nicht. Deshalb wollte ich den Staus beim Öffnen, so wie in Excel es möglich ist, in ein Workbook_Open einsetzen. Aber das ist nicht das Thema hier.

Zurück zur Formatsache.
Habe ich da was falsch verstanden von dem, was du mir da vorgibst?
Das ist doch VBA Code. Wo ist der Code zu finden?
Im Modul ist nichts,

bahasu

Hi Achim,

Zitat von: accessy am Oktober 14, 2012, 14:10:40
Aber ich finde keinen, wenn ich unter Module nachschaue.
Module ist leer. Nichts drin.

Nicht im Modul sondern im Formular den VBA-Code eintragen.
Die eben erstellte Anleitung mit Hardcopys ist für das Forum zu groß geworden. Bei Bedarf also als Email versendbar.

Harald
Servus

Beaker s.a.

Hallo Achim,
Zitatim Formular steht für "Beim Öffnen" als Eintrag "Ereignisprozedur"
In der Zeile klickst Du auf die Schaltflächen mit den drei Punkten,
und landest in der zugehörigen Sub im richtigen Modul (Klassenmodul
des Forms).
ZitatDas bedeutet wohl, es gibt einen VBA Code.
Erst wenn Du die Sub definitiv anlegst (s.o.).
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

accessy

Jetzt weiß ich auch, warum ich das nicht ins Formular einbauen kann.
Dieser Kartenreiter des Registersteuerelements beinhaltet nur Textboxen.

Aber mir stellt sich schon wieder die Grundsatzfrage wie man überhaupt den Code dort eingeben kann,
selbst wenn ein Formular da wäre.
Ich frage mich wie man im VBA Editor auf der linken Seite im Projekt-Explorer ein Klassenobjekt zufügt.
Da gibt es das Modul 1, wo der Code für das ShellExecute steht,
und 4 Klassenobjekte für meine 4 Formulare.
Rechte Maustaste, linke Maustaste...völlig egal.. geht beides nicht.

Um für ein Formular Code in ein Klassenobjekt einfügen zu können, musste ich immer erst Umwege machen.
Einfach einen Commandbutton nehmen, ein Makro drauflegen und dann wieder löschen.
Dann erst existierte überhaupt erst das FORM_KUNDEN.

Wie kann ich nun diesen Code einbauen für diese Registerkarte OHNE Unterformular?

accessy

Hallo ekkehard,

hat sich wohl gerade überschnitten.
Deine Antwort mit meinem Anliegen.

Danke dir für den Hinweis.

Beaker s.a.

Hallo Achim,
ZitatWie kann ich nun diesen Code einbauen für diese Registerkarte OHNE Unterformular?
Weiss zwar nicht wieso es plötzlich um ein Register-Element geht,
(ursprünglich ging's ja um eine Formatierung), aber dieses Element
hat seine eigenen Ereignisse, völlig unabhängig, ob darauf ein UFO
platziert wird oder nicht. Das gleiche gilt für ein UFO(-Steuerelement),
egal ob auf einer Registerkarte oder sonstwo auf einem Form.
Das Klassenmodul eines Form taucht im VBE erst im Projektexplorer
auf wenn die erste Sub angelegt wurde. Zum Öffnen reicht bei mir
(A2010) ein Rechtsklick auf den Eintrag im Explorer und dann die
Auswahl "Code anzeigen".
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)