Wie addiere ich Zahlen in VBA?

3 Antworten

Du solltest die Variablen mit passendem Typ deklarieren

Sub Zahlen()
Dim Zahl1 As Integer
Dim Zahl2 As Integer
Dim Ergebnis As Integer
Dim Art As String
...

Achte darauf, dass ganz oben im Modul "Option Explicit" steht. Dies entbindet dich jedoch nicht davon, die Datentypen der Variablen festzulegen. InputBox gibt standardmäßig String zurück.

Alternativ kannst du den Rückgabewert von InputBox casten:

Zahl1 = CInt(InputBox(...))

Die erste Zeile ist ein typischer Anfängerfehler in VBA.

Public Zahl1, Zahl2, Ergebnis As Long

Bedeutet nicht, dass alle drei als Long dimensioniert werden, sondern dass Zahl1 und Zahl2 als Variant und nur Ergebnis als Long dimensioniert wird. Dadurch wird in Zahl1 und Zahl2 das Variablenformat reingespeichert, was aus der Textbox kommt. Und das ist halt String. Wenn man zwei Strings "zusammenrechnet", kommt eben 11 anstatt 2 raus.

Das hier sollte schon reichen, um das Problem zu beheben: 

Public Zahl1 As Long, Zahl2 As Long, Ergebnis As Long

Dadurch werden alle drei Variablen als Zahlen dimensioniert und dann wird auch richtig damit gerechnet.

das hätte wegen dem plus in "ergebnis" nicht funktioniert...hab das jetzt als string und jetzt gehts :) Aber Danke!!!

0

Hab die Lösung grad selbst gefunden :D

Option Explicit

Public Zahl1, Zahl2 As Long

Public Art, Ergebnis As String

Sub Zahlen()

Zahl1 = InputBox("Geben Sie die erste Zahl ein: ")

Zahl2 = InputBox("Geben Sie die zweite Zahl ein: ")

Art = InputBox("Sollen die Zahlen addiert oder subtrahiert werden? +/-")

If Art = "+" Then

Ergebnis = (Zahl1 + Zahl2)

Else

Ergebnis = (Zahl1 - Zahl2)

End If

MsgBox ("Das Ergebnis lautet " & Ergebnis & ".")

End Sub

Ergebnis musste auch string sein...da kommt das plus ja auch vor

Sieh dir mal an, was @Suboptimierer geantwortet hat, so wäre es richtig. 

Dein eigenes Ergebnis funktioniert nur deshalb, weil das Ergebnis der InoutBox (immer vom Typ string) automatisch von VBA in den Typ long umgewandelt wird, da Zahl1 und Zahl2 ja als long deklariert wurden.

Sauberer ist es, explizit aus dem Ergebnisstring eine Zahl vom Typ Long mit der Funktion CInt() oder besser CLong() zu machen. 

0

Ja danke ;) werd mir das auf jeden Fall mal genauer angucken

0

Ich habe eine Exceltabelle in der in einem bestimmten Feld jeden Tag ein neuer Wert steht. Nun soll der per Makro in einem anderen Feld dazu addiert werden?

...zur Frage

JAVA - 2 vorgegebene Zahlen multiplizieren?

Hallo, ich bin dabei Java neu zu lernen und habe folgendes Problem:

Wie schreibe ich in Java, dass sich 2 von mir vorgegebene Zahlen miteinander multiplizieren und das Ergebnis mittels "SystemOutPrint" angezeigt wird?

Mit meinem Ansatz liege ich auf jeden Fall völlig daneben, denn das was ich hier geschrieben habe existiert wohl so garnicht, also nicht böse sein:

public class Test {
public static void main(String[] args) {

int Zahl1 = 3
int Zahl2 = 2
ergebnis = Zahl1 * Zahl2

System.out.println(ergebnis);
}
}
...zur Frage

Bluej Taschenrechner?

Hi, hab folgendes Problem hab einen Taschenrechner in Bluej programmiert aber der soll beimdividieren nicht runden wie schaff ich das? Das ist das Programm: public class Taschenrechner { //int zahl1; //int zahl2; int ergebnis;

public Taschenrechner()
{
    //zahl1=4;
    //zahl2=5;
    ergebnis=0;
}
public int addiere(int zahl1, int zahl2){

    ergebnis=zahl1+zahl2;
    return ergebnis;
}
public int subtrahiere (int zahl1, int zahl2){
    ergebnis=zahl1-zahl2;
    return ergebnis;
}

public int multipliziere (int zahl1, int zahl2){
    ergebnis=zahl1*zahl2;
    return ergebnis;
}

public int dividiere (int zahl1, int zahl2){
    ergebnis=zahl1/zahl2;
    return ergebnis;
}

}

...zur Frage

Ich möchte in Excel, dass man einen Druckauftrag nur per VBA geben kann, und NICHT über Datei -> Drucken oder STRG+P. Geht das?

Meine Idee war, zunächst das Drucken mittels InputBox per Passwort zu schützen.

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim pw As String, chk As String
pw = "Passwort"
chk = InputBox("Bitte Passwort eingeben", "Druckauftrag", "xxx")
If pw <> chk Then
    MsgBox "Falsches Passwort. Druckauftrag abgebrochen"
    Cancel = True
    Exit Sub
End If
End Sub

Dann einen zweiten VBA-Code der tatsächlich das Drucken ermöglicht.

Option Explicit                                     

Sub Drucken()

    Dim LoI As Long                                 
    Dim LoLetzte As Long                           
    LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 45)), _
        Cells(Rows.Count, 45).End(xlUp).Row, Rows.Count)
    For LoI = LoLetzte To 2 Step -1
        If Cells(LoI, 45) <> Empty Then Exit For
    Next LoI
    ActiveSheet.PageSetup.PrintArea = "$A$1:$AU$" & LoI
    ActiveSheet.PrintOut
    
End Sub

Inklusive der Eingabe des Passworts für die InputBox.

Aber ich habe mich belesen, dass das Eintragen des PW per VBA in einer InputBox sehr aufwendig sein soll.

Habt Ihr andere Ideen?

...zur Frage

C# Zahlen quadrieren

Tach Experten,

Hät eine Frage bezüglich meines Taschenrechner in C#. Mein geschriebener Code funktioniert nicht und ich finde den Fehler nicht ( schreibt mir das 'Ergebnis' im Kontext nicht vorhanden ist ).

Würd mich freuen, wenn mir jemand bei meinem Problem helfen könnte.

if (HY.Checked)

        {
            double Zahl1 = double.Parse(Xzahl.Text);
            int Zahl2 = int.Parse(Yzahl.Text);
            double Ergebnis;

            if (Zahl2 == 0)
            {
                lbl.Text = "Das Ergebniss ist : 1";
            }

            else

            {
                for (int i = 1; i < Zahl2; i++ )
                {
                    Ergebnis = Ergebnis * Zahl1;

                }



                lbl.Text = "Das ergebnis ist : " + Ergebnis.ToString();
            } 
...zur Frage

Java:Taschenrechner:Konsole:Problem

import java.util.Scanner;

public class test{
    public static void main(String[] args){

        System.out.println("Dies ist ein Taschenrechner, bitte nur folgende Rechenmethoden verwenden(ausgeschrieben): ");
        System.out.println("plus\n"+"minus\n"+"mal\n"+"durch\n");

        Scanner eingabe = new Scanner(System.in); //Scanner

        String rechenmethode = String.valueOf(eingabe); //String deklarieren

        double zahl1, zahl2; //Varriablen deklarieren


        System.out.println("Erste Zahl bitte: "); //Abfrage erste Zahl
        zahl1 = eingabe.nextDouble();
        System.out.println("Rechenmethode bitte: "); //Abfrage Rechenmethode
        rechenmethode = eingabe.next();
        System.out.println("Zweite Zahl bitte: "); //Abfrage zweite Zahl
        zahl2 = eingabe.nextDouble();
        Double Summe = zahl1+zahl2; //verarbeiten der eingaben
        Double Differenz = zahl1-zahl2; //verarbeiten der eingaben
        Double Produkt = zahl1*zahl2; //verarbeiten der eingaben
        Double Quotient = zahl1/zahl2; //verarbeiten der eingaben


        if(rechenmethode.equals("plus")){ //Ausgeben des Ergebnisses
            System.out.println(Summe);
        }
        else if(rechenmethode.equals("minus")){ //Ausgeben des Ergebnisses
            System.out.println(Differenz);
        }
        else if(rechenmethode.equals("mal")){ //Ausgeben des Ergebnisses
            System.out.println(Produkt);
        }
        else if(rechenmethode.equals("durch")){ //Ausgeben des Ergebnisses
            System.out.println(Quotient);
        }




        System.out.println("\n\nby Max Musterma"); //Ausgabe des wundervollen Namen des Programmierers

    }
}

Taschenrechner der 2Zahlen zusammenrechnet...

Nun will ich beliebig viele Zahlen zusammenrechnen..

import java.util.Scanner;
public class Rechner2 {
    public static void main(String[]args){

        Scanner eingabe = new Scanner(System.in);

        double ergebnis = 0;
        int i = 0;

        while(i<1){
            System.out.println("Zahl:");
            double zahl = eingabe.nextDouble();
            if(zahl == 0){
                break;
            }
            System.out.println("Rechenmethode:");
            String zeichen = eingabe.next();
            if(zeichen.equals(0)){
                break;
            }
            switch(zeichen){
                case "+": ergebnis = ergebnis + zahl;
                break;
                case "-": ergebnis = ergebnis - zahl;
                break;
                case "*": ergebnis = ergebnis * zahl;
                break;
                case "/": ergebnis = ergebnis / zahl;
                break;  
            }
        }
        System.out.println(ergebnis);

        System.out.println("\n\nMax Mustermt");
    }
}

testen...

man kann nun beliebig viele Zahlen zusammenrechnen, mit verschiedenen

...zur Frage

Was möchtest Du wissen?