MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Visual Studio /.NET > Visual Basic für Windows (alle Versionen bis 6.0)
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 18.05.2018, 09:25   #1
RicoStark
Neuer Benutzer
Neuer Benutzer
Standard Sonstiges - Menge Überprüfen mit Gerade und Ungerade

Guten Morgen Liebe Office-Experten,

ich bin neu hier und ich hoffe ich habe hier keinen unnötigen Beitrag eröffnet.

Aber ich weiß nicht, unter welcher Begrifflichkeit ich eventuell eine Lösung für mein Problem finden kann.

Und zwar habe ich im Jahr 2004/2005 das letzte mal VBA benutzt, und habe Gestern angefangen es mir wieder anzueignen, dies kurz zu meinem Hintergrund.

Und zwar habe ich eine UserForm erstellt, wo eine textbox als Eingabefeld für eine Menge dienen soll.

Jetzt möchte ich, dass nach der Eingabe der Menge eine Restmenge addiert wird. Die Restmenge soll fix sein z.B. 6kg und wird in einer extra Textbox ausgegeben. Diese 6 kg sollen immer drauf addiert werden wenn zB. das Gewicht von 100kg erreicht worden ist. Also so das wenn ich eine menge von 0-100 kg eingebe eine Restmenge von 6kg drauf addiert wird und eine gesamtmenge von 106kg heraus kommt, bei 101-200 = 212, bei 201-300 = 318 usw..

Dabei muss ich sagen, das die Funktion RoundUp bei mir immer fehler verursacht.

Ich habe einen Lösungsweg der schon ziemlich gut ist aber nicht perfekt.

Dim rest_menge As Double
Dim x As Double
Dim tamenge As Integer
Dim Wmenge As Double




MsgBox Menge

If Menge = "" Then

MsgBox "Bitte Menge eintragen."

Else
Wmenge = Menge / 100
If Wmenge Mod 1 = 0 Then

MsgBox "Menge ist gerade " & Wmenge

rest_menge = Wmenge * 6

Else
MsgBox "Menge ist ungerade " & Wmenge

rest_menge = Int((Menge / 100) * (10 ^ 0)) / (10 ^ 0) + 1


End If

MsgBox "Der Rest beträgt" & rest_menge

MsgBox " Testwert für das runden ist " & (Int((Menge / 100)) + 1)

dbz = rest_menge * 6

tamenge = x + Menge

MsgBox "Es ist eine Restmenge von " & x & "g bei den Kartuschen zu berücksichtigen!"

MsgBox "Beachte die benötigte Fettmenge beträgt also " & Menge & "g + " & x & "g = " & tamenge & "g."

End If

Vielen Dank schon einmal
RicoStark ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.05.2018, 15:59   #2
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Hallo und willkommen RicoStark,

nein, unnötig ist Dein Beitrag nicht; - aber Du klopfst an die falsche Forumstür, denn hier wollen wir uns gerade nicht mit Office-VBA befassen sondern mit traditionellem Visual Basic bis zur Version 6. Andererseits unterscheidet sich eine mögliche VBA-Lösung nur minimal von einer VB-Lösung, sodass wir Deine Fragen hier auch abhandeln können.

Wenn Du künftig VBA-Fragen stellst, dann besser in den passenden Forumsabschnitten für Access, Excel oder Word. Und wenn Du Code zeigst, dann benutze das Forums-Tag für Code einfügen, was die Strukturerhaltung und Lesbarkeit von Code deutlich erhöht. Bei Excel und Word ist es oft auch sinnvoll, eine Beispielmappe bzw. ein Dokument mit hochzuladen.

Da die Aufgabenstellung und die Parameter nicht beschreiben sind, habe ich Deine Rechenregeln noch nicht durchschaut. Beschreib das doch besser in einzelnen Schritten, denn 0 bis 100 scheint mir nicht logisch. In Deinem Code ist mir auch völlig unklar, was das gerade/ungerade bewirken soll und warum Du mit 10 hoch 0 = 1 jonglierst.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2018, 08:03   #3
RicoStark
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Suche

Guten Morgen Haklesoft,

danke für die Hinweise , werde mich in Zukunft darum bemühen alles Ordentlich zu machen . Wo ist eigentlich der genaue unterschied zwischen normalen VBA und excel VBA?

Also zu meinem Beispiel:

Nach einer gewissen Anzahl/Menge soll, ein gewisser Betrag drauf addiert werden bzw. berücksichtigt werden.

Also zB. wenn jemand 100 ml Öl kauft, soll eine restmenge von 10 ml berücksichtigt werden, die im Behälter als rest verbleibt.

Dieser muss zum verkauf dennoch berücksichtigt werden.

Sodass ich nach jeden 100ml die ich in das Programm eingebe 10ml zusätzlich drauf addiere, weil nach jeden 110ml brauche ich einen neuen Behälter und dieser benötigt wieder eine Restmenge.

Damit bei 200ml eine restmenge von 20ml, bei 500ml 50ml rest und so weiter, da dies wichtig für die Kalkulation ist.

Ich möchte also meine gewünschte menge eingeben und er soll direkt die tatsächliche benötigte Menge kalkulieren und dazu den preis ausgeben.

Über Excel an sich konnte ich das Problemlos realisieren, bei VBA tu ich mich da allerdings irgendwie noch schwer .

Ich möchte damit, einfach ein kleines Programm schreiben, welches den Mitarbeiter durch mehrere Messageboxen darauf hinweist was zu berücksichtigen ist und was er einzugeben hat, sodass jeder im Betrieb dieses stumpf nutzen kann.


In excel habe ich das so gelöst das

aufrunden(EingegebeneMenge/Grenzmenge;Stellen Auf die Gerundet werden soll)

damit habe ich den Faktor 1,2,3,4,5,6 usw. erhalten mit dem ich dann einfach meine 10ml multipliziert habe, also das er immer aufrundet zb.von 2,01 direkt auf 3.

zb. aufrunden(250/100;0) = 3 ; Tatsächliche menge = 250 + 3*10 = 280

aufrunden(310/100;0) = 4 ; Tatsächliche menge = 310 + 4*10 = 350

aufrunden(105/100;0) = 2 ; Tatsächliche menge = 105 + 2*10 = 125

aufrunden(50/100;0) = 1 ; Tatsächliche menge = 50 + 1*10 = 60

So in etwa sollte das eigtl. funktionieren
RicoStark ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2018, 14:54   #4
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Mit einer kleinen Funktion kannst Du die gesuchten Gesamtmengen ermitteln:
Code:

Option Explicit

' Ermittlung einer Gesamtmenge mit Aufschlag je Einheit
Public Function Gesamtmenge(lWunschmenge As Long) As Long
    Const clEINHEIT As Long = 100   ' 100 ml als Einheitengröße vorgeben
    Const clAUFSCHLAG As Long = 10  '  10 ml als Aufschlag je Einheit zugeben
    Dim lFaktor As Long

    lFaktor = Int(lWunschmenge / clEINHEIT)
    If lFaktor < (lWunschmenge / clEINHEIT) Then lFaktor = lFaktor + 1
    Gesamtmenge = lWunschmenge + (clAUFSCHLAG * lFaktor)

End Function
VBA ist in jeder Officeanwendung integriert und nur darin lauffähig, mit VB erstellt man eigenständig lauffähige Programme. Der Befehlssatz ist weitgehend gleich. VBA enthält zusätzlich das komplette Objekt der jeweiligen Officeanwendung. VBA wurde immer wieder mal in kleinen Schritten erweitert, VB wird dagegen seit vielen Jahren von Microsoft nicht mehr aktualisiert. Nachfolger ist DotNet.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 25.05.2018, 14:27   #5
RicoStark
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Traurig

Kannst du mir das eventuell alles genauer erklären? warum Public warum as long was bedeutet const.(konstant) ?

Probiere diesen Code jetzt erstmal aus, Danke.
RicoStark ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.05.2018, 13:15   #6
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Zitat: von RicoStark Beitrag anzeigen

Kannst du mir das eventuell alles genauer erklären? warum Public warum as long was bedeutet const.

Die Grundlagen von VBA solltest Du Dir selbst aneignen. Dafür ist das Forum nicht geeignet.

Eine Public-Funktion kann aus dem gesamten Projekt gerufen werden, eine Private nicht. Welchen Datentyp und warum würdest Du hier statt Long verwenden wollen? Eine Konstante ist konstant, eine Variable nicht.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.06.2018, 07:41   #7
Stalone77
MOF User
MOF User
Standard

Danke für die Tipps!
Stalone77 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.