Microsoft Excel

Herbers Excel/VBA-Archiv

Excel VBA schleife, Bedingungen stimmen nicht

Betrifft: Excel VBA schleife, Bedingungen stimmen nicht von: Maurice
Geschrieben am: 12.10.2014 12:26:20

Guten morgen,

ich habe ein Problem mit meinem Excel Makro. Ich muss eine schleife basteln, die eine händische "Stückelung" vollbringen soll. Sinn und Zweck der Sache ist ein Sägelistenmakro, das mir genau sagt wieviel ich bestellen muss, und welche Position ich aus welchem Stab sägen muss damit ich am Ende so wenig Verschnitt wie möglich habe.
Das problem das ich habe, ist das die Schleifenbedienungen nicht stimmen und ich ehrlich gesagt nicht mehr dahinter komme was ich falsch mache. mal funktioniert das Programm, mal nicht. Alles sehr komisch.

Das Programm fängt bei mir einer definierten maximallänge an, und schaut in der Tabelle, was er sägen kann. wenn etwas passt, "sägt" er es ab, und zählt die Stückzahl runter. Wenn eins nicht mehr passt, schaut er ob es was kürzeres gibt und ob man das nicht sägen kann. Wenn aber alles zu lang ist, aber noch Sachen zu sägen sind, soll er mit einem neuen Stab anfangen, in dem fall soll er natürlich wieder bei den längsten anfangen (sind der länge nach sortiert)

Der Code schaut wie folgt aus :

Dim längenew As Single
Dim Stückzahl As Integer
Dim Stückzahl_schleife As Integer
Dim Mitschreiber As String
Dim Stabzähler As Integer
Dim Reststück As Single
längenew = länge
Mitschreiber = "Stab " & Stabzähler & " :" & vbCrLf
For erstezeile = 7 To letztezeile
Do

If Cells(erstezeile, 3) + Schnittfugenbreite < längenew And Cells(erstezeile, 6) > 0 Then
längenew = längenew - Cells(erstezeile, 3) - Schnittfugenbreite
Mitschreiber = Mitschreiber & "Position " & Cells(erstezeile, 1) & ", "
'Msgbox ("Länge" & längenew & "Schritte" & Schritte)
Cells(erstezeile, 6) = Cells(erstezeile, 6) - 1
Else
erstezeile = erstezeile + 1
End If

Loop Until Cells(erstezeile, 6) = 0

If erstezeile = letztezeile And Application.WorksheetFunction.Sum(ActiveSheet.Range(Cells(7, 6), Cells(letztezeile, 7))) > 0 Then
Reststück = längenew
längenew = länge
Stabzähler = Stabzähler + 1
Mitschreiber = Mitschreiber & "Restlänge : " & Reststück & vbCrLf & vbCrLf & "Stab " & Stabzähler & " : " & vbCrLf
erstezeile = 7
End If

Next erstezeile

Vielen Dank schön mal :)

  

Betrifft: In diesem Fall... von: {Boris}
Geschrieben am: 12.10.2014 13:14:27

Hi Maurice,

...wäre es sicherlich hilfreich, Deine Datei zu kennen. Vielleicht kannst Du sie ja mal hochladen.

VG, Boris


  

Betrifft: Zuschnittproblem - Cutting stock - Excel-Solver von: Christian
Geschrieben am: 12.10.2014 13:30:38

Hallo Maurice,
Sägelistenmakro, das mir genau sagt wieviel ich bestellen muss, und welche Position ich aus welchem Stab sägen muss damit ich am Ende so wenig Verschnitt wie möglich habe.

Ohne jetzt deinen Code-Schnipsel näher betrachtet zu haben, handelt es sich hierbei um ein klassisches Optimierungs-Problem - schau mal bei Google unter "cutting stock problem" oder "eindimensionales Zuschnittproblem"

Hierzu gibt es verschiedene mathematische Ansätze wie zB. Simplex-Verfahren, Newton, ...

Für eine Lösung mit Excel schlage ich vor:
Erstelle (per vba) bei gegebener Stablänge für die gesuchten Zuschnitte alle möglichen Kombinationen.
Daraus ergibt sich ein lineares Gleichungssystem.
Dieses Gleichungssystem kannst du in Excel dann (bis max 200 Gleichungen) mit dem Excel-Solver lösen.

Grüße
Christian


  

Betrifft: AW: Excel VBA schleife, Bedingungen stimmen nicht von: Maurice
Geschrieben am: 12.10.2014 14:35:57

Hey, danke für eure schnellen Antworten.
Christian: Ich muss sagen, du machst mir ein wenig angst damit. Das ganze sollte doch nur ein Makro für einen Freund werden, der fragte ob das machbar ist. Der hat es die letzten 30 Jahre so gerechnet, und ist noch nicht pleite, daher denke ich dass diese Optimierung sicherlich für die Großindustrie hilfreich ist, in meinem Fall eines mittelständischen 5Mann Betriebes jedoch eher mit Kanonen auf Spatzen geschossen ist. Ich habe jetzt mal die besagte Excel Datei angehängt, damit ihr euch ein besseres Bild machen könnt.

https://www.herber.de/bbs/user/93122.xlsm


  

Betrifft: AW: Excel VBA schleife, Bedingungen stimmen nicht von: {Boris}
Geschrieben am: 12.10.2014 14:46:36

Hi,

also ich fänd`s zielführend, wenn Du in der Datei mal genau beschreibst, was Du wie genau rechnen möchtest (mit manuellem Lösungsweg).
Aber vielleicht haben andere da ja nen besseren Blick drauf als ich.

VG, Boris


  

Betrifft: AW: Excel VBA schleife, Bedingungen stimmen nicht von: Maurice
Geschrieben am: 12.10.2014 15:05:04

So ich habe den Code an der Stelle der schleife mal kommentiert, ich hoffe es hilft euch :)

https://www.herber.de/bbs/user/93123.xlsm


  

Betrifft: AW: Excel VBA schleife, Bedingungen stimmen nicht von: Christian
Geschrieben am: 14.10.2014 23:57:14

Hallo Maurice,
ich war die letzten Tage unterwegs, daher mein Antwort etwas verspätet.
Für die "Großindustrie" ist eine Lösung per Excel-Makro sicher nicht geeignet, die nutzen dafür Großrechner und professionelle Software.
Aber warum sollte ein 5-Mann Betrieb nicht versuchen, Material und Zeit zu optimieren? Da könnte der zuvor beschriebene Ablauf durchaus hilfreich sein.
Denn gleichzeitig versuchst du in deinen Tabellen Gehrungswinkel und Schnittbreite zu berücksichtigen ... das wird bei deinem Level " Basiskenntnisse in VBA" sicher eine zusätzliche Herausforderung.

Aber bleiben wir mal bei den Basics "Zuschnittproblem":
Ich hab mir deinen Code jetzt nicht näher angeschaut (da sind viel zu viele Hieroglyphen drin - verzichte auf Umlaute, vba spricht englisch):


Aber schau dir als Alternative zu oben beschriebenen Ablauf mal bei Wiki oder Google den Alorithmus "First Fit" an.

"First Fit" lässt sich in Excel-VBA ohne Solver umsetzen - je nach Voraussetzung ist der "Abfall" um Faktor 3 bis Faktor X höher als bei der Solver-Lösung.

Grüße
Christian


  

Betrifft: AW: Excel VBA schleife, Bedingungen stimmen nicht von: Maurice
Geschrieben am: 15.10.2014 08:20:22

Hey,
danke für den Tipp, werde mich die Tage mal darüber schlau machen, was das ist und wie ich das implementieren könnte.
Zu den Umlauten, vielleicht liegt es daran das ich auf Mac arbeite, aber bei mir stehen die Umlaute ganz normal da. Werde das bei lust und Laune auch ändern.

Die Schnittfugenbreite war nicht das Problem, die wird ja einfach mit abgezogen. Die Gehrung, ja, das ist auch so eine Sache. Das sollte in der 2ten Version implementiert werden, und dient momentan nur als Platzhalter. Leider habe ich momentan noch nicht mal eine Idee, wie ich die Sache überhaupt angehen soll :D

Gruß
Maurice


  

Betrifft: AW: Excel VBA schleife, Bedingungen stimmen nicht von: Christian
Geschrieben am: 15.10.2014 09:54:50

Hi,
wenn ich heute Abend etwas Zeit habe, kann ich dir ein Bsp. für FirstFit zusammen bauen.
Versprechen kann ich es noch nicht.
Gruß
Christian


 

Beiträge aus den Excel-Beispielen zum Thema "Excel VBA schleife, Bedingungen stimmen nicht"