1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Problem mit VBS (GoTo-Befehl)

Discussion in 'Programmieren' started by Soxx, Aug 14, 2010.

Thread Status:
Not open for further replies.
  1. Soxx

    Soxx Byte

    Hallo libe Community

    da ich jetzt meine ausbildung zum Steuerfachangestellten begonnen habe wurde mir die aufgabe gestelt ein programm zuschreiben welches mir meine arbeit erleichter ....

    was liegt da näher als ein programm welches %Rechnungen übernimmt...

    in einzelteilen (Plus / Minus) funktioniert es auch schon nur halt nicht zusammen :aua:

    wobei ich probleme habe sthet in <spitzen klammern>

    hier das Script:

    On Error Resume Next


    <Fenster zum wählen (Plus/Minus) und danach Springen (wenn Plus zu Plus) (wenn Minus zu Minus)>

    <Plus>


    Msgbox "Mit dieser Funktion steigern sie einen Wert um einen gewünschten Prozentsatz"

    dim b
    set b = CreateObject("WScript.Shell")
    b = InputBox("Bitte den Ursprungswert eingeben","Eingabebox","Hier die Zahl eingeben")

    dim c
    set c = CreateObject("WScript.Shell")
    c = InputBox("Bitte den Prozentsatz eingeben um welchen der Ursprungswert erhöht werden soll werden soll","Eingabebox","Hier die Zahl eingeben")

    dim d
    set d = CreateObject("WScript.Shell")
    d = c -- 100


    dim e
    set e = CreateObject("WScript.Shell")
    e = b / 100 * d


    MsgBox "Das Ergebnis ihrer Rechnung lautet: " & e,64,""

    <Befehl um zum ende des Scripts zu springen(ende)>


    <Minus>

    Msgbox "Mit dieser Funktion senken sie einen Wert um einen gewünschten Prozentsatz"

    dim f
    set f = CreateObject("WScript.Shell")
    f = InputBox("Bitte den Ursprungswert eingeben","Eingabebox","Hier die Zahl eingeben")

    dim g
    set g = CreateObject("WScript.Shell")
    g = InputBox("Bitte den Prozentsatz eingeben um welchen der Ursprungswert gesenkt werden soll","Eingabebox","Hier die Zahl eingeben")

    dim h
    set h = CreateObject("WScript.Shell")
    h = g -- 100


    dim i
    set i = CreateObject("WScript.Shell")
    i = f / h * 100

    MsgBox "Das Ergebnis ihrer Rechnung lautet: " & i,64,""


    <ende>
     
  2. chipchap

    chipchap Ganzes Gigabyte

    Hallo Soxx!

    Folgendes ist mir aufgefallen:
    - wo sind Sub und End Sub?
    - die Division durch "0" wird nicht abgefangen
    - aus welcher Anwendung heraus wird das Script aufgerufen?
    - "Minus" rechnet falsch (100 - 5% = 95,23...?)
    - warum nimmst Du nicht VB?

    Gruß chipchap

    EDIT:
    Hab ' ne kleine Auswahlroutine im gleichen Stil geschrieben:
    Code:
    Sub Start()
    Dim s
    Set s = CreateObject("WScript.Shell")
    s = InputBox("Plus, Minus, ENDE?", "Eingabebox", "P = Plus; M = Minus; E = ENDE")
    Select Case s
    Case "P", "p"
        PLUS
    Case "M", "m"
        MINUS
    Case "E", "e"
        Exit Sub
    Case Else
        Start
    End Select
    Start
    End Sub
    Funktioniert bei mir unter Excel 2007 und Vista 64 Ulti.
    Aus einer "Sub" kommt man sofort mit "Exit Sub" raus.

    Den Rest mußt Du noch abfangen.
     
    Last edited: Aug 14, 2010
  3. Soxx

    Soxx Byte

    danke dir chipchap

    da mir aber gesagt wurde das das programm eigenst&#228;ndig bzw "ohne" ein office programm laufen sollte damit ich es auch auf rechnern ohne office anwenden kann schrieben soll w&#252;rde diese idee also wegfallen....

    k&#246;nnteste mir die auch f&#252;r vbs schreiben???

    Gru&#223; soxx

    da dieser rechner etwas mit Mwst zutun hat darfst du beim minusrechnen nicht von 100% ausgehen sondern von 119% / 107%
     
  4. chipchap

    chipchap Ganzes Gigabyte

    Und wie wird das Script dann aufgerufen?
    Hast Du kein VB6?
    Da geht vieles leichter. :)
    Erklär mir dann bitte mal den Rechenweg von "MINUS".
    Wo ist die Unterscheidung zwischen reduzierter und normaler MWSt?
     
  5. Soxx

    Soxx Byte

    habe in dieser sache nur windows standart (winXP SP3)

    wir kaufen uns zB einen Fernseher für 100€ (wert inklus. 19% Mwst)

    dann wären die 100€ = 119%

    119% = 100€
    1% = 100/119
    100% = 100/119 * 100 (119% - 19% = 100%)
    100% = 84,03€

    :bitte: ^^

    hoffe kannst mir trotzdem im bezug auf VBS helfen
     
  6. chipchap

    chipchap Ganzes Gigabyte

    Hallo Soxx!

    1. Es heißt Standard
    2. Was soll der Blödsinn: "119% -19%"; daß das 100% sind ist wohl klar.
    :cool: .
    3. Wo ist die Unterscheidung zwischen Reduziertem (7%) und normalem (19%) Mehrwertsteuersatz ?
    4. Wie wird die Berechnung aufgerufen?
    5. Bekommst Du Geld für Deinen Beruf?

    Ich bin eigentlich mehr auf der VB6-bewandert, aber die Kollegen sind da besser.

    Gruß chipchap
     
  7. Soxx

    Soxx Byte

    zu 3. wie meinste das möchtest du wissen welche waren mit welchem prozentsatz versteuert sind??

    zu 4. wie du sehen kannst

    dim f
    set f = CreateObject("WScript.Shell")
    f = InputBox("Bitte den Ursprungswert eingeben","Eingabebox","Hier die Zahl eingeben")

    dim g
    set g = CreateObject("WScript.Shell")
    g = InputBox("Bitte den Prozentsatz eingeben um welchen der Ursprungswert gesenkt werden soll","Eingabebox","Hier die Zahl eingeben")

    dim h
    set h = CreateObject("WScript.Shell")
    h = g -- 100

    dim i
    set i = CreateObject("WScript.Shell")
    i = f / h * 100


    wird bei g der prozentsatz eingegeben (7 oder 19) und bei h dann mit 100 addiert

    dann der ursprungswert (f) durch seinen prozentsatz (g) geteilt und dann mit 100 multiplitziert


    zu5. ja ich bekomme während meiner ausbildung geld
     
  8. chipchap

    chipchap Ganzes Gigabyte

    Langsam tröpfelt es durch.
    Du berechnest bei "Minus" also den Nettowert.

    Noch mal:
    Führst Du das .vbs-Script per Klick oder aus einem Programm heraus aus?
    Bei mir geht es leider nur aus Excel :cool: .

    Also dann:
    http://www.amazon.de/Windows-Script...=sr_1_1?ie=UTF8&s=books&qid=1281809257&sr=8-1
    http://www.amazon.de/Windows-Script...=sr_1_4?ie=UTF8&s=books&qid=1281809257&sr=8-4

    Gruß chipchap

    P.S.: Ein geeigneter Taschenrechner für 15.- Euro packt +TAX und -TAX mit einem Tastendruck :) - aber zum Programmieren lernen ist das Beispiel gut.
     
  9. Soxx

    Soxx Byte

    ich fürhe die vbs mit einem einfachen doppelklick aus
     
  10. Urs2

    Urs2 Megabyte

    Hallo Soxx

    VBS ist etwas einfach gestrickt >
    - es können nur die vorgegebenen Texte für die Buttons benutzt werden
    - den GoTo-Befehl gibt es nicht (er wäre in Deinem Entwurf sowieso unbrauchbar)...
    ...Du musst dafür If-Abfragen verwenden.

    Zuerst fragt eine MsgBox was der User tun will (...da kann man wenigstens nicht irgendwelchen unbrauchbaren Mist eintippen...), dann leitet der Script entsprechend weiter.

    - Wenn Abbruch gedrückt > dann ist alles fertig.
    - Wenn keine Zahl eingegeben wird > auch fertig >>>
    >> ich habe den Default "Hier die Zahl eingeben" entfernt >> stehen gelassen, wäre er eine Eingabe...
    ...und verstehen tut sich das sowieso von selbst.
    - Das Resultat wird auf zwei Stellen gerundet.

    Code:
    ausWahl = MsgBox("Soll der Endwert oder der Ausgangswert berechnet werden ?" & _
    		vbCr & vbCr & "Endwert >> JA klicken" & _
    		vbCr & "Ausgangswert >> NEIN klicken", _
    		vbYesNoCancel, _
    		"Wählen Sie die Berechnungsart...")
    							
    If ausWahl = 6 Then
    	ausgangsWert = InputBox("Bitte den Ursprungswert eingeben", _
    			"Eingabebox")
    		If ausgangsWert = "" Then wscript.Quit
    	steuerSatz = InputBox("Bitte den Prozentsatz eingeben um welchen der Ursprungswert erhöht werden soll", _
    			"Eingabebox")
    		If steuerSatz = "" Then wscript.Quit
    	MsgBox "Der Endwert ist  " & Round(ausgangsWert + ausgangsWert * steuerSatz, 2) / 100, 64
    
    ElseIf ausWahl = 7 Then
    	endWert = InputBox("Bitte den Endwert eingeben", _
    			"Eingabebox")
    		If endWert = "" Then wscript.Quit
    	steuerSatz = InputBox("Bitte den Prozentsatz eingeben um welchen der Endwert reduziert werden soll werden soll", _
    			"Eingabebox")
    		If steuerSatz = "" Then wscript.Quit
    	MsgBox "Der Ausgangswert ist  " & Round(endWert /(100 + steuerSatz) * 100, 2), 64
    End If
    - Wenn jemand dummes Zeug eintippt (Buchstaben oder sinnlose Zahlen) gibt es einen Laufzeitfehler...
    - Die Berechnung habe ich etwas reduziert... aber ich bin kein MWSt-Experte > Dein Bier.
    - Wenn es nur 2 Steuersätze gibt, würde ich diese mit einer MsgBox abfragen >
    >>> Normal=JA - Reduziert=NEIN
    >>> dann kann man hier schon einmal keinen Mist eingeben.

    Gruss Urs
     
    Last edited: Aug 15, 2010
  11. Urs2

    Urs2 Megabyte

    Beim nachträglichen Einfügen der Runden-Funktion, hatte ich die Stellenanzahl an den falschen Ort gesetzt >>>

    Diese Zeile >
    MsgBox "Der Endwert ist " & Round(ausgangsWert + ausgangsWert * steuerSatz, 2) / 100, 64

    muss so sein >
    MsgBox "Der Endwert ist " & Round(ausgangsWert + ausgangsWert * steuerSatz / 100, 2), 64

    Gruss Urs
     
  12. Soxx

    Soxx Byte

    danke dir chipchap für die links vom amazone damit werd ich mir was beibringen ;)

    und dir Urs danke für das script funktioniert einwandfrei
     
Thread Status:
Not open for further replies.

Share This Page