Optimieren mit Aarray
17.02.2007 11:13:12
Gregor
Ich will auf einer Zelle (Cursorpostion mir rechter Maustaste) aus 16 Zellen die Werte in Variablen einlesen und diese in einer User Form anzeigen. Es hat in den 16 Zellen max 8 Einträge, die übrigen sind leer. Bei einem Zelleintrag ist immer deren Spaltenüberschrift in Zeile 1 in eine Variable einzulesen:
P_Höhe1 (Soaltenüberschrift Zeile 1)
P_Länge1 (Wert in Zelle)
Index1 (Wert in Zelle)
Ich versuchte es irgendwie mit der Array-Funktion, ohne Erfolg.
Mit dieser Prozedur komme ich zum Resultat, es scheint mir aber sehr amateurhaft. Wie kann ich diese Prozedur optimieren. Ich benötige diese Funktion in ähnlicher Weise für verschiedene Dateien.
Sub Werte_anzeigen()
Application.ScreenUpdating = False
Application.EnableEvents = False
Zeile = ActiveCell.Row
Spalte = ActiveCell.Column
Gleis = Cells(Zeile, 22).Value
Nutzlänge = Cells(Zeile, 23).Value
Zähler = 0
For Start = 0 To 14
Länge = Cells(Zeile, Spalte + 5 + Start)
If Länge > 0 Then
P_Länge1 = Länge
P_Höhe1 = Cells(1, Spalte + 5 + Start)
Index1 = Cells(Zeile, Spalte + 6 + Start)
Start = Start + 2
Zähler = Zähler + 1
If Zähler = 8 Then GoTo Marke
Exit For
Else
P_Länge1 = ""
P_Höhe1 = ""
End If
Start = Start + 1
Zähler = Zähler + 1
If Zähler = 8 Then GoTo Marke
Next
For Start = Start To 14
Länge = Cells(Zeile, Spalte + 5 + Start)
If Länge > 0 Then
P_Länge2 = Länge
P_Höhe2 = Cells(1, Spalte + 5 + Start)
Index2 = Cells(Zeile, Spalte + 6 + Start)
Start = Start + 2
Zähler = Zähler + 1
Exit For
Else
P_Länge2 = ""
P_Höhe2 = ""
End If
Start = Start + 1
Zähler = Zähler + 1
If Zähler = 8 Then GoTo Marke
Next
For Start = Start To 14
Länge = Cells(Zeile, Spalte + 5 + Start)
If Länge > 0 Then
P_Länge3 = Länge
P_Höhe3 = Cells(1, Spalte + 5 + Start)
Index3 = Cells(Zeile, Spalte + 6 + Start)
Start = Start + 2
Zähler = Zähler + 1
Exit For
Else
P_Länge3 = ""
P_Höhe3 = ""
End If
Start = Start + 1
Zähler = Zähler + 1
If Zähler = 8 Then GoTo Marke
Next
For Start = Start To 14
Länge = Cells(Zeile, Spalte + 5 + Start)
If Länge > 0 Then
P_Länge4 = Länge
P_Höhe4 = Cells(1, Spalte + 5 + Start)
Index4 = Cells(Zeile, Spalte + 6 + Start)
Start = Start + 2
Zähler = Zähler + 1
Exit For
Else
P_Länge4 = ""
P_Höhe4 = ""
End If
Start = Start + 1
Next
Marke:
usrWerte.Show
End Sub
Vielan Dank und Gruss
Gregor