Zum Inhalt springen

Berechnung mit VBA


AHNUNG?

Empfohlene Beiträge

Hallo zusammen,

ich habe abe ein kleines mathematische Problem bei dem mir vllt. einer helfen kann.

ich habe zwei Variablen

a = 500

b = 2

a x b = 1.000

nun die Ergebnisse der Überprüfung.

2 x 500 = ok

4 x 250 = ok

6 x 166 = ok

Alle Längen über 250 (wenn Variable = 500) passen nur ein Mal.

3 x 251 = falsch

(passt zwar für die Gesamtlänge (1.000), aber nicht für die Einzellänge von 500

vielleicht kann ja jemand helfen.

vielen Dank im Voraus

Ahnung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde ja gern helfen - aber aus deinem Beitrag wird leider nicht klar, wo das Problem liegt.

Dank des Titels kann man wenigstens erahnen, dass es um VBA geht. Aber weder nennst Du die Art/Typ der Variablen (http://www.vba-tutorial.de/variablen/datentypen.htm)

noch teilst Du uns überhaupt mit was Du genau vorhast und wie der Rechenweg aussieht. Was für "Gesamt-/Einzellängen" sollen WIE überprüft werden?

Aber vielleicht hast Du nur einen Integer-Überlauf und ich dir mit dem obigen Link schon geholfen..

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

die Variablen sind völlig egal ;-) Da es sich um Zahlen handelt würde ich aber Integer wählen!

Mir geht es doch gerade um die Rechnung (kleines mathematisches Problem!), die ich anstellen muss um das oben aufgezeigte Ergebnis zu erhalten.

Es geht um Längenberechnung!

Im o.g. Beispiel habe ich eine Gesamtlänge von 1.000mm.

3 x 251mm = 753mm es passt zwar in 1.000mm, das Programm würde dann aber trotzdem einen Fehler erzeugen, da es mit den Einzellängen von jeweils 500mm nicht geht!

Nun mehr Licht im Dunkeln?

AHNUNG?

 

Bearbeitet von AHNUNG?
Link zu diesem Kommentar
Auf anderen Seiten teilen

Was meinst du denn mit "passen" und was sind die "Einzellängen"? Kannst du das vielleicht etwas greifbarer darstellen? Das, was du suchst, kann schwer vorhergesehen werden, wenn der Kontext fast komplett fehlt.

Ich hab zwar ne Vermutung, in welche Richtung das geht, aber das Ganze hat doch überhaupt nix mit VBA zu tun, sondern reine Algorithmik richtig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 22 Stunden, AHNUNG? sagte:

3 x 251mm = 753mm es passt zwar in 1.000mm, das Programm würde dann aber trotzdem einen Fehler erzeugen, da es mit den Einzellängen von jeweils 500mm nicht geht!

Was heißt "geht mit Einzellängen von jeweils 500mm nicht"? Muss das Gesamtergebnis ein Vielfaches von 500 sein? Dann passt 6*166 aber auch nicht...

Kannst du nicht einmal erklären, worum es bei der Rechnung überhaupt geht? Mir scheint, als wäre das eine Aufgabe, zu der Hintergrundinformationen notwendig sind, die hier keiner (außer dir) kennt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Arlegermi,

ich möchte noch einmal erwähnen, dass es um eine Plausibilitätsprüfung (ausgeführt als VBA-Code) gehen soll.

Ich habe zwei Holzbretter mit jeweils 500cm Länge. Die Länge und die Anzahl kann natürlich variabel sein.

Wenn ich in der Arbeitsvorbereitung nun sage, dass der im Zuschnitt aus 2 x 500cm bitte 6 x 166cm dann ist das möglich....jeweils 498cm pro Brett und 2cm Rest.

Wenn ich dagegen sage, dass er bitte 5 x 167cm machen soll ist das nicht möglich, da ich aus jedem Holzbrett nur 2 x 167cm (=334cm) herausbekommen würde.

Die Plausibilitätsprüfung müsste dann sagen, dass ich für 5 x 167cm ein weiteres Brett (500cm) bestellen müsste.

Verstanden?.......sorry, ich kann das Problem nicht plastischer darstellen ;-)

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden, AHNUNG? sagte:

Verstanden?.......sorry, ich kann das Problem nicht plastischer darstellen ;-)

Ja, jetzt ist es klar geworden.

Folgender Ansatz:

Du hast:
Länge_haben = 500
Anzahl_haben = 2

Du prüfst:
Länge_prüf = 251
Anzahl_prüf = 3

1. Schritt: Länge_prüf * Anzahl_prüf <= Länge_haben*Anzahl_haben ?
Hier: 251 * 3 <= 500 * 2? true

2. Schritt: Länge_haben / Länge_prüf (ganzzahlig)
Hier: 500 / 251 = 1

3. Schritt: Ergebnis aus Schritt 2 mit Anzahl_haben multiplizieren
Hier: 1 * 2

4. Schritt: Ergebnis_S3 >= Anzahl_prüf
Hier: 2 >= 3? false -> Fehler

Das ist jetzt ganz naiv, einfach Schritt für Schritt die Angaben auswerten. Das kann man sicher cleverer gestalten.

Bearbeitet von arlegermi
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

ich habe das Problem nun gelöst. Vielen Dank an alle.

Hier mein - funktionierender - VBA-Code!

Do While ActiveSheet.Cells(Zeile, Spalte - 3).Value <> "ENDE"

   If ActiveSheet.Cells(Zeile, Spalte + 4).Value <> "" Then

        If ActiveCell.Value = Tabelle2.Range("D15").Value Or ActiveCell.Value = Tabelle2.Range("D18").Value Then
           Bestelllaenge = ActiveSheet.Cells(Zeile, Spalte + 3).Value
           Bestellanzahl = ActiveSheet.Cells(Zeile, Spalte + 4).Value
           Solllaenge = ActiveSheet.Cells(Zeile, Spalte + 5).Value
           Sollanzahl = ActiveSheet.Cells(Zeile, Spalte + 6).Value
           If Solllaenge * Sollanzahl <= Bestelllaenge * Bestelllaenge Then
              Laenge_Pruef = Bestelllaenge / Solllaenge
              Laenge_Pruef = WorksheetFunction.RoundDown(Laenge_Pruef, 0)
              Anzahl_Pruef = Laenge_Pruef * Bestellanzahl
              Anzahl_Pruef = WorksheetFunction.RoundDown(Anzahl_Pruef, 0)
              If Anzahl_Pruef >= Sollanzahl Then
                 ActiveSheet.Cells(Zeile, Spalte + 4).Select
                 Selection.Interior.Color = 13434828
                 ActiveSheet.Cells(Zeile, Spalte).Select
                 ActiveSheet.Cells(Zeile, Spalte + 20).Value = 0
              Else
                 ActiveSheet.Cells(Zeile, Spalte + 4).Select
                 Selection.Interior.Color = 8420607
                 ActiveSheet.Cells(Zeile, Spalte).Select
                 ActiveSheet.Cells(Zeile, Spalte + 20).Value = 1
              End If

           End If
       
        End If

   End If

Zeile = Zeile + 1
ActiveSheet.Cells(Zeile, Spalte).Select

Loop

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...