Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Optimieren mit Aarray

Optimieren mit Aarray
17.02.2007 11:13:12
Gregor
Hallo zusammen
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optimieren mit Aarray
17.02.2007 18:43:26
Erich G.
Hallo Gregor,
ich glaube, dieses Makro produziert das gleiche Ergebnis wie das Deinige:
Sub Werte_anzeigen()
Dim Zähler As Integer, Start As Integer
Zeile = ActiveCell.Row
Spalte = ActiveCell.Column
Gleis = Cells(Zeile, 22).Value
Nutzlänge = Cells(Zeile, 23).Value
'                                      Controls füllen max. bis Zähler = 4
For Start = Spalte + 5 To Spalte + 19 Step 2
If Cells(Zeile, Spalte + Start) > 0 Then
Zähler = Zähler + 1
Me.Controls("P_Höhe" & Zähler) = Cells(1, Start)
Me.Controls("P_Länge" & Zähler) = Cells(Zeile, Start)
Me.Controls("Index" & Zähler) = Cells(Zeile, Start + 1)
If Zähler >= 4 Then Exit For
End If
Next Start
'                                      falls Zähler < 4, restl. Controls leeren
For Start = Zähler + 1 To 4
Me.Controls("P_Höhe" & Start) = ""
Me.Controls("P_Länge" & Start) = ""
Me.Controls("Index" & Start) = ""
Next Start
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Optimieren mit Aarray
17.02.2007 20:14:00
Gregor
Hallo Erich
Interessanter Vorschlag. Leider erhalte ich beim Testen eine Fehlermeldung:
Fehler beim Kompilieren:
Unzulässige Verwendung des Schlüsselworts Me.
Die Werte der Variablen
P_Höhe1 usw.
P_Länge1 usw.
Index1 usw
übernehme ich in der UserForm "usrWerte".
Kannst du mir sagen, was da nicht stimmt?
Herzlichen Dank
Gregor
AW: Optimieren mit Aarray
17.02.2007 20:31:08
Erich G.
Hallo Gregor,
da mir die Umgebung deines Makros nicht klar war (und ist),
habe ich den Code einfach in UserForm_Activate() einer UF geschrieben und am Ende das ...Show weggelassen.
Du hast die Prozedur vermutlich in einem Standardmodul.
Von wo aus und wann wird sie aufgerufen?
Sind die im Code nicht deklarierten Variablen globale Variable?
Wie übernimmst du die Werte in deine Userform?
Heißen deine Controls (etwa Labels oder Textboxen) in der UF so, wie ich das vermutet habe?
Die Variablen als "Zwischenspeicher" könntest du dir ersparen.
Wenn der Aufruf nur beim Öffnen der UF erfolgt, kannst du das auch in UserForm_Activate() schreiben.
Das gleiche gilt, wenn der Aufruf nach einem Click (oder einem anderen Ereignis) erfolgen soll.
Eine weitere Möglichkeit wäre, usrWerte anstelle von Me zu schreiben.
Noch eine Frage: Das Makro geht von der aktiven Zelle aus.
Müsstest du nicht sicherstellen, dass sich die Zelle in einem zulässigen Bereich befindet?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Optimieren mit Aarray
18.02.2007 00:28:16
Gregor
Hallo Erich
Ich wollte dir eine Beispiel-Datei ins Netz stellen, klappt leider nicht. Erhalte immer die Meldung "ungültiger Dateiname". Ich versuche es morgen nochmals.
Die Spalten AL bis BA sind für den Benutzer mit Hidden ausgeblendet.
Beim Bedienen der rechten Maustaste auf eine beliebige Zeile in Spalte AG sollen die Werte dieser Zeile in den Spalten AL bis BA in einer UserForm angezeigt werden. Es sind Maximal 4 Spalten ausgefüllt.
Eine entsprechende UserForm "usrWerte habe ich erstellt.
Vielen herzlichen Dank
Gregor
AW: Daten aus Tab in Userform
18.02.2007 07:28:26
Erich G.
Hallo Gregor,
das Hochladen einer Datei kann aus mehreren Gründen schiefgehen.
Der Pfad- und der Dateiname dürfen nicht zu lang sein und
keine Sonderzeichen (äöüß, vielleicht auch Leerzeichen,# u.a.) enthalten.
Wenn nötig, kannst du mit dem Explorer eine Kopie mit einfachem Namen
in einem "einfachen" Verzeichnis erstellen und die Kopie hochladen.
Ich habe mal nachgebaut, was ich jetzt verstanden habe. Passt vermutlich noch nicht wirklich,
aber das Pronzip wird wohl deutlich:
https://www.herber.de/bbs/user/40511.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Daten aus Tab in Userform
18.02.2007 10:53:09
Gregor
Hallo Erich
Danke für den Tipp.
Ich habe die Beispiel-Datei jetzt noch hochgeladen, vermutlich lag es tatsächlich am zu langen Verzeichnis.
https://www.herber.de/bbs/user/40513.xls
Deinen Vorschlag habe ich noch nicht in meine Datei umgesetzt, vermutlich führt aber dieser einfachere Weg zum Ziel.
Vielen Dank
Gregor
AW: Danke
18.02.2007 12:49:45
Gregor
Hallo Erich
Ich habe dein Vorschlag nun in meine Datei eingefügt und angepasst. Klappt bestens. Vielen Dank, ist für mich eine nützliche Lehrlektion.
Grüsse aus Luzern
Gregor
Danke für Rückmeldung - Schönes WE! (oT)
18.02.2007 13:02:15
Erich G.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige