Wie kann ich eine Tabelle in Access mit drei Spalten manipulieren über eine Formeingabe durch VBA-Code?

2 Antworten

Zunächst mal ist der Nettowert nicht Brutto x 0,19 ;-)

Nehmen wir an, deine Felder heißen in der Tabelle RechNr, Netto, MwstSatz und Brutto. Die Feldreihenfolge im Formular ist jetzt wichtig. In dem Feld, in dem die letzte Eingabe erfolgt fügst du den Code im Eventhandler "Nach Aktualisierung" ein:

Netto = Brutto / (100 + MwstSatz) * 100

Wenn deine Felder auf dem Formular (theoretisch) RechNrFeld, NettoFeld, MwstSatzFeld und BruttoFeld heißen würden, könntest du auch schreiben:

Me.NettoFeld = Me.BruttoFeld / (100 + Me.MwstSatzFeld) * 100

Das Me-Objekt bezeichnet das Objekt, in dem aktuell Code ausgeführt wird, in diesem Fall das Formular. Im Beispiel könnte man "Me." auch weglassen. Das geht aber nicht immer.

Beachte auch, dass manchmal (nicht hier) eine Aktualisierung des Formulars notwendig wird. Dazu benötigst du dann

Me.Repaint (komplette "Neuzeichnung" des Formulars)
Me.Requery (Abfragen werden aktualisiert)
Me.Recalc (berechnete Felder werden aktualisiert)

Du kannst in Access ein Formular aufgrund einer vorhandenen Tabellendefinition erstellen, am besten mit dem Assistenten. Wenn der Nettobetrag in der Tabelle automatisch berechnet wird, dann tut es auch das Formular. Ebenso kannst du für eine Spalte einen DefaultWert vergeben, den es beim Anlegen eines neuen Datensatzes auch im Formular vergibt.

Probier 's einfach mal aus.

10

Vielen Dank für deine Hilfe. Das Problem ist foldendes: ich möchte ein Formular mit drei Feldern erstellen für eine Tabelle mit 4 Feldern. Das vierte Feld soll kalkuliert werden, nachdem ich die drei Felder gefüllt habe.

Es geht um Access nicht um Excel. Kann ich in Tabellen eine Funktion übergeben?

Würde es auch mit VBA gehen mit einer Funktions Prozedur?

Danke für die Hilfe.

0
23
@mali1234

Du brauchst dafür kein VBA.

Du erstellst erst die Tabelle mit den Feldern (Spalten) ID, Brutto, MWStSatz. Beim Erstellen des Feldes Netto gibst du an, dass es sich um ein "berechnetes Feld" handeln soll. Du gibst in der Folgemaske die Berechnung ein (Brutto / 100 * MWStSatz). In den Feldeigenschaften gibst du jeweils bei "Beschriftung" die Namen der Felder für das Formular ein.

Jetzt weißt du dem Feld MWStSatz den Standardwert "19" zu.

Tabelle speichern.

Jetzt geht 's ans Formular. Gehe in die Kategorie "Formular" und dort zur Registerkarte "Erstellen" und dort in den "Formularassistenten". Hier erstellst du dann auf der Grundlage deiner Tabelle das Formular. Geht fast alles automatisch.

Am Ende sperrst du das Feld Netto im Formular für Eingaben.

Beim Springen mit der TAB-Taste wird Netto übersprungen. Beim Anlegen eines neuen Datensatzes bzw. beim Ändern eines bestehenden wird der Nettobetrag automatisch neu berechnet.

Fertig.

0
10
@Robsl

vielen dank für die informationen und die mühe. ich möchte das ganze allerdings in vba hinbekommen. es geht mir nicht darum, dass ich das über die berichte lösen kann oder über die spalteneigenschaften. ich möchte es über vba hinbekommen. der grund ist einfach: lerneffekt.

der vorteil ist, dass ich es dann auch auf andere fälle übertragen kann und erfahre, wie man es so hinbekommt, dass es im hintergrund ausgeführt wird.

ein weiterer vorteil ist, dass die eingabemaske=formular einfach gehalten werden kann und damit weniger fehler aus menschlicher sicht passieren können, da weniger eingegeben werden muss.

0
23
@mali1234

Ich verstehe, dass du VBA üben willst, aber einfacher als auf die von mir geschilderte Weise kannst du das Formular nicht "stricken". Im MWSt-Feld steht immer 19 ("Prozent" kannst du in die Überschrift nehmen, genau wie "Euro" für die beiden anderen Felder), es ist aber überschreibbar, das Netto wird automatisch berechnet, welches der beiden Felder "Brutto" oder "MWSt-Satz" du auch immer änderst.

Wenn du VBA üben willst, dann stelle darüber fest, wie hoch das Netto ist und setze einen Grenzbetrag, bei dessen Überschreiten eine MsgBox darauf hinweist.

Oder erstelle eine weitere Tabelle "Artikel", in der du Waren mit Einheiten (Stück, Kilo, Set usw.) und Preisen einträgst. Ein weiteres Formular "Bestellungen" bietet dir dann eine ausreichende Spielwiese für VBA. Dazu gibt 's dann noch die Tabelle "Lagerbestand" der gleichen Artikel, mit deren Hilfe du im Bestellformular per VBA prüfen kannst, ob für die aktuelle Bestellung noch genügend Bestand vorhanden ist.

Die integrierten Werkzeuge von Access nicht zu nutzen ist, als würdest du in Excel die Summenfunktion per VBA neu erfinden.

Das Spielfeld hat fast keine Grenzen und das Zusammenwirken von Access-eigenen Funktionen mit VBA hat einen hohen Spaßfaktor. Je tiefer du einsteigst, desto "lustiger" wird es. Ich habe mit Access ernsthafte Anwendungen für meinen Arbeitgeber zusammengebaut, ich weiß also, wovon ich schreibe.

In diesem Sinne: Viel Freude :)

0

Immer gleichen Wert in Spalte festlegen! (Excel, Access)

Hi MS excel, Access Nutzer!

Suche schon seit Stunden danach wie man in einer Spalte einen Wert z.B die Zahl "2" dauerhaft festlegt, sodass die unter dem Feldnamen (z.b C) immer steht (C 1,2,3,4.....). Ziel ist es den Wert nicht immer eintippen zu müssen!

Das sollte doch irgendwie möglich sein oder? Alles was ich dazu gefunden hatte war viel zu kompliziert.. Kann mir nicht vorstellen, dass das der Fall ist.

Vielen Dank für hilfreiche Antworten!

P.S.: Die Lösung wie mans in Access umsetzt wäre mir am liebsten!

...zur Frage

Muss ich die MwSt. bei einem Brutto=Netto-Betrag ansetzen, wenn dieser weiterberechnet wird?

Wir sind ein umsatzsteuerpflichtes Unternehmen. Ich habe eine Rechnung aus dem Ausland über Betrag X, brutto=netto. Muss ich beim Weiterberechnen den vollen Betrag angeben oder die MwSt. (unsere 19%) vorher abziehen, da diese am Ende ja wieder aufgeschlagen werden?

...zur Frage

Gezahlte Vorsteuerbeträge in Anlage Eür

Ich weiß, dass die Gezahlte Vorsteuerbeträge in Anlage Eür, ist das MwSt. das Ich für meine Betriebsausgaben gezahlt habe.

Meine Frage ist: Ich habe für Hotel in Schweden bezahlt (so übernachtungskosten), das heißt, dass das MwSt. nicht in Deutschland bezahlt ist.

Beispiel: Netto Betrag: 100 EUR MwSt. Schweden 25% = 25 EUR Brutto: 125 EUR

Soll ich diese MwSt. Betrag (25 EUR) in Gezahlte Vorsteuerbeträge stellen und die Netto betrag (100 EUR in übernachtungskosten), oder die gesamte brutto Betrag (125 EUR) in übernachtungskosten?

Danke.

...zur Frage

MS ACCESS 2013: Wie kann ich per Klick auf eine Schaltfläche einen Wert (Zahl) um 1 erhöhen?

Hallo,

ich möchte in meinem "Besucher" DB einen Wert mit Hilfe eines Buttons um Eins erhöhen. Das heißt: Ich habe eine Tabelle für Besucher erstellt. Dort sind folgende Daten vorhanden:

ID, Vorname, Nachname, Alter, Anzahl_Besuche

Und ich habe ein Formular, für diese Tabelle erstellt. Nun möchte ich beim Klick auf dem Button, dass beim ausgewählten Besucher der Wert für Anzahl_Besuche sich um eins erhöht.

Da ich mich mit Access nicht so gut auskenne (Blutiger Anfänger), weiß ich nicht genau, wie ich das realisieren kann. Ich habe eine Schaltfläche in mein Formular hinzugefügt und nun fragt Access mich danach, was dieser Button tun soll. Der Schaltflächen-Assistent schlägt mir verschiedene Operationen vor, aber da ist nirgendwo was von einen Wert erhöhen oder ändern. Von daher komme ich nicht weiter.

...zur Frage

Funktionen aus einem Modul in ein Worksheet hineinbringen (wie verknüpfe ich)?

'Ich möchte aus einem Modul namens "Sql' eine Funktion namens Funktion1 in eine Excel Tabelle mit VBA übernehmen.
Hier mein Code:

  Private Sub Funktion1()
Dim Z As Variant
Z = SQL.Funktion1 

End Sub
funktioniert jedoch nicht wie gewünscht 

...zur Frage

was bedeutet Abschlagszahlung?

Ich habe Post von mein Stromanbieter bekommt drinne steht:

Rechnungsbetrag netto.. MwSt.. brutto.. (da stehen natürlich zahlen darunter) abzüglich Ihrer bis zum .. geleisteten Abschlagzahlungen Ihr Guthaben: 111,96 euro

Für den neuen Abbrechnngszeitraum haben wir folgenden Abschlagsbetrag ermittelt: Strom netto .. MwSt in %.. MwSt in euro.. brutto.. Abschlagsbetrag 51,00 euro

Muss ich jetzt den Betrag zahlen?? Vielen dank im Vorraus.

...zur Frage

Was möchtest Du wissen?