Hallo Zusammen,
Ich bin neu bei VBA und habe da mal ein kleines Programm entwickelt.
Mein Problem ist,dass ich einen Laufzeitfehler bekomme,welcher nicht angezeigt wird. Vielleicht könnt ihr mir ja helfen.
Code
Sub Layoutplanung()
Const n = 9 'Anzahl der Maschinen und Stellplätze
Dim VZ(1 To n) As Single 'Menge der vorläufig zugeordneten Maschinen
'(als Vektor von Binärvariablen abgebildet)
Dim VN(1 To n) As Single 'Menge der vorläufig nicht zugeordenten Maschinen
Dim EZ(1 To n) As Single 'Menge der endgültig zugeordneten Maschinen
Dim EN(1 To n) As Single 'Menge der endgültig nicht zugeordneten Maschinen
Dim VZS(1 To n) As Single 'Menge der vorläufig zugeordneten Stellplätzen
Dim VNS(1 To n) As Single 'Menge der vorläufig nicht zugeordenten Stellplätzen
Dim EZS(1 To n) As Single 'Menge der endgültig zugeordneten Stellplätzen
Dim ENS(1 To n) As Single 'Menge der endgültig nicht zugeordneten Stellplätzen
AnzahlVZS = 8
AnzahlVZ = 8
Dim d(1 To n, 1 To n) As Single 'Entfernungen zwischen Stellplatz k und Stellplatz l
Dim m(1 To n, 1 To n) As Single 'Transportmengen von Maschine i zu Maschine j
Dim g(1 To n, 1 To n) As Single 'Gesamttransportmenge
Dim ZeilenMin(1 To n) As Single 'minimale Transportkosten zu Kunde j
Dim ZeilenMax(1 To n) As Single
'Initialisieren der Standortmengen
For i = 1 To 9
VZS(i) = 0: VNS(i) = 1: EZS(i) = 0: ENS(i) = 0
Next i
For k = 1 To 9
VZS(k) = 0: VNS(k) = 1: EZS(k) = 0: ENS(k) = 0
Next k
'Initialisieren der verfügbaren Standorte bzw. Maschinen
'Daten einlesen
Worksheets("Layoutplanung").Select
For k = 1 To n
For l = 1 To n
d(k, l) = Cells(4 + k, 3 + l).Value
Next l
Next k
For i = 1 To n
For j = 1 To n
m(i, j) = Cells(23 + i, 3 + j).Value
Next j
Next i
y = 1
for y = 1 to 9
'Bildung des Zeilenmin für Entfernungen
Min = 1000000
For k = 1 To 9 'bin in 1.Zeile
If VZS(k) = 1 Then
Sum = 0
For l = 1 To n 'nehme 1.Spalte
Sum = Sum + d(k, l) 'summiere die Entfernungen auf
Next l
If Sum < Min Then
Min = Sum
ind2 = k
Sp = Cells(4 + k, 3).Value
End If
End If
Next k
EZS(ind2) = 1: VZS(ind2) = 0: AnzahlVZS = AnzahlVZS - 1
Worksheets("Aufgabe1a").Select
a = 1
Cells(1, a) = Sp
a = a + 1
'Zusammenaddieren der Transportmengendaten zur Gesamttransportmenge
For i = 1 To n
For j = 1 To n
w = i
s = j
g(i, j) = m(i, j) + m(s, w)
Next j
Next i
'Bildung des Zeilenmax für Gesamttransportmenge
SpaltMax = 0
For i = 1 To n 'bin in 1.Zeile
If VZ(i) = 1 Then
Sum2 = 0
For j = 1 To n 'nehme 1.Spalte
Sum2 = Sum2 + g(i, j) 'summiere die Entfernungen auf
Next j
If Sum2 > SpaltMax Then
SpaltMax = Sum2
ind = i
Ma = Cells(23 + i, 3).Value
End If
End If
Next i
EZ(ind) = 1: VZ(ind) = 0: AnzahlVZ = AnzahlVZ - 1
Worksheets("Aufgabe1a").Select
b = 1
Cells(1, b) = Ma
b = b + 1
next y
End Sub
Alles anzeigen