AW: Löschen von Variablen in Schleifen
02.05.2005 14:48:32
Variablen
Hallo Marcus,
das System DEiner Berechnung habe ich noch nicht mitbekommen. Ich habe mal Kommentare in Deinen Code geschrieben. Ich würde mal vermute Deine While Schleife hat den falschen Bezug.
Sub interpolation()
Dim loads, lastvalue, highvalue1, highvalue2, intz, endintz, index1, def1, def2, load1, load2, res, k1, k2, j
k1 = 7
k2 = 2
' Letzte Zelle in Spalte B, diese Zeile führ zu
' falschen Ergebniss falls B65536 belegt
intz = Worksheets("Tabelle2").Range("B8").End(xlDown).Row
' 7 Zeilen nach oben Warum ?
endintz = intz - k1
' Letzter Wert in Spalte B Tabelle1
highvalue1 = Worksheets("Tabelle1").Range("B2").End(xlDown).Value
' letzter Wert Spalte C Tabelle2
highvalue2 = Worksheets("Tabelle2").Range("C8").End(xlDown).Value
For i = 1 To endintz
' letzte Zelladresse in Spalte B aktuelle Tabelle
' Wozu wird die Festgestellt, Sie wird ja nicht benutzt
lastvalue = Range("B" & i + k2).End(xlDown).Address
' Wert der aktuelle Zeile Spalte C
loads = Worksheets("Tabelle2").Range("C" & i + k1).Value
' Wert der aktuelle Zeile Spalte B Tabelle 1
def1 = Worksheets("Tabelle1").Range("B" & i + k2).Value
' Zeiele feststellen der aktuellen Zeile,
' warum so kompliziert es ist immer I+k2
' warum neue Variable
j = Worksheets("Tabelle1").Range("B" & i + k2).Row
' schleife dirch Tabelle1 Spalte B bis max. letzter Zeile oder
' def1> loads
' Worksheets("Tabelle1").Range("B" & i + k2).Value<Worksheets("Tabelle2").Range("C" & i + k1).Value
' in der aktuellen Tabelle also Tabelle1 dort gibt es aber nur 22 Zeilen in Tabelle1 aber 589
' warum muß die Schleife durch Zeile 23 bis 589 Laufen die sind doch leer
While def1 < loads And j <= Worksheets("Tabelle1").Range("B" & i + k2).End(xlDown).Row
def1 = Range("B" & j)
j = j + 1
Wend
' Werte zuordnen
def2 = Worksheets("Tabelle1").Range("B" & j - 1).Offset(0, -1).Value
def1 = Worksheets("Tabelle1").Range("B" & j - 2).Offset(0, -1).Value
' Offset(0,0) was soll das es ist doch die aktuelle Zeile
load2 = Worksheets("Tabelle1").Range("B" & j - 1).Offset(0, 0).Value
load1 = Worksheets("Tabelle1").Range("B" & j - 2).Offset(0, 0).Value
' Berechnung
res = def1 + (def2 - def1) * ((loads - load1) / (load2 - load1))
' Wert in Tabelle2 schreiben
Worksheets("Tabelle2").Range("D" & i + k1) = res
Next i
End Sub
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.