Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code Probleme

Code Probleme
04.03.2008 18:11:00
Nico
Hallo Leute
ich will in einer UF wo Labels drin sind werte wiedergeben. Aber es dauert immer so lange bis der die Werte Aktualisiert werden. Ich benutze diesen Code. Könnt ihr mir helfen den Code so umzustellen das er direkt Aktualisiert? Bitte um hilfe.

Private Sub UserForm_Initialize()
With Worksheets("Tabelle2")
Label1 = .Cells(2, 2)
Label4 = .Cells(3, 2)
Label6 = .Cells(4, 2)
Label8 = .Cells(5, 2)
End With
End Sub


12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code Probleme
04.03.2008 18:43:00
Daniel
HI
also direkt aktualisieren oder was immer du meinst, geht nicht.
das einzige, was deinen Code beschleunigen könnte, wäre erst die Daten in eine Array-Variable zu kopieren und dann von dort in die Labels zu schreiben.
Das ist etwas schneller als jedesmal die Zellen auszulesen:

Private Sub UserForm_Initialize()
dim arr
arr = Worksheets("Tabelle2").Range("B2:B5")
Label1 = arr(1, 1)
Label4 = arr(2, 1)
Label6 = arr(3, 1)
Label8 = arr(4, 1)
End Sub


Gruß, Daniel

AW: Code Probleme
04.03.2008 18:55:00
Nico
Hallo Daniel
ok das klappt aber was mach ich wenn ich mehrere bereiche habe. Wie ändere ich da den Code.
Gruß Nico

Anzeige
AW: Code Probleme
04.03.2008 18:57:00
Daniel
Hi
woher soll ich das wissen?
das hängt doch davon ab, wo deine Bereiche liegen.
Gruß, Daniel

AW: Code Probleme
04.03.2008 19:21:58
Nico
kann ich die anderen bereiche einfach so eintragen. Zb. arr = Worksheets("Tabelle2").Range("B2:B5, C2:C5")
Gruß Nico

AW: Code Probleme
04.03.2008 19:34:00
Daniel
Hi
so wirds nicht gehen, in diesem fall dann so:
arr = Worksheets("Tabelle2").Range("B2:C5")
wenn du dann auf einen Wert der Spalte C zugreifen willst, ist der 2. Index eben 2:

Labels2 = arr(1,2)


würde dann den Wert aus Zelle C2 ins Label2 schreiben.
mit arr = Range(x:y) erzeugst du eine 2-dimensionale Array-Variable, wobei arr(1,1) immer den Wert der linken oberen Zelle, den du unter Range() angeben hast, entspricht.
der erste Index entspricht dann den Zeilen und der zweite Index den Spalten.
vorteil des ganzen ist, daß in den Array-Variablen nur die Werte gespeichert sind und VBA daher damit wesentlich schneller arbeiten kann als mit den Excel-Objekten so wie Range oder Cells.
Gruß, Daniel

Anzeige
AW: Code Probleme
04.03.2008 19:49:34
Nico
Hallo Daniel
tut mir leid das ich schon wieder nerve aber ich krieg das einfach nicht hin. Kannst du mir vieleicht ein Beispiel an dem Code zeigen?
Gruß Nico

AW: Code Probleme
04.03.2008 20:02:00
Daniel
Hi
ohne konkrete Vorgabe von dir nein.
Gruß, Daniel

AW: Code Probleme
04.03.2008 20:06:00
Nico
Hi
ich habe werte in B2:B5, B7:B12, C2, D2, E1:E15. Ist das möglich?
Gruß Nico

AW: Code Probleme
04.03.2008 20:13:19
Daniel
Hi
in diesem Fall kannst du auch so arbeiten:
arr = Range("a1:E15")
die Index-Nummern vor arr entsprechen dann den Zeilen- und Spaltennummern der Zellen, die du in die Labels schreiben willst, dh.

arr = Range("A1:E15")
Label1 = arr(14, 4)


hätte das gleiche Ergebnis wie


Label1 = Cells(14, 4)


wäre aber schneller
Gruß, Daniel

Anzeige
AW: Code Probleme
04.03.2008 20:56:30
Nico
Hi
wenn ich es so mache werden nicht alle werte den Labels zugeteilt. Habe ich einen fehler gemacht?

Private Sub UserForm_Initialize()
With Worksheets("Tabelle2")
Dim arr
arr = Range("A1:E15")
Label1 = arr(2, 2)
Label2 = arr(3, 2)
Label3 = arr(4, 2)
Label4 = arr(5, 2)
Label5 = arr(7, 2)
Label6 = arr(8, 2)
Label7 = arr(9, 2)
Label8 = arr(10, 2)
Label9 = arr(11, 2)
Label10 = arr(12, 2)
Label11 = arr(2, 3)
Label112 = arr(2, 4)
Label13 = arr(1, 5)
Label14 = arr(2, 5)
Label15 = arr(3, 5)
Label16 = arr(4, 5)
Label17 = arr(5, 5)
Label18 = arr(6, 5)
Label19 = arr(7, 5)
Label20 = arr(8, 5)
Label21 = arr(9, 5)
Label22 = arr(10, 5)
Label23 = arr(11, 5)
Label24 = arr(12, 5)
Label25 = arr(13, 5)
Label26 = arr(14, 5)
Label27 = arr(15, 5)
End With
End Sub


Anzeige
AW: Code Probleme
04.03.2008 21:04:40
Daniel
Hi
bist du sicher, daß du dem Array die richtigen Werte zugewiesen hast?
arr = Range("A1:E15")
bezieht sich immer auf das gerade aktive Sheet, unabhängig von der With-Klammer.
kurz gesagt, du hast wahrscheinlich den Punkt vergessen:
arr = .Range("A1:E15")
allerdings brauchst du hier die With-Klammer nicht, da du die Angabe des Tabellenblatts bei dieser Vorgehensweise nur 1x benötigst, dh. du kannst gleich direkt schreiben:
arr = Worksheet("Tabelle2").Range("A1:E15")
und dann die With-Klammer weglassen.
Gruß, Daniel

AW: Code Probleme
04.03.2008 21:08:51
Nico
Hi Daniel
danke für deine hilfe es klappt jetzt. Dieser eine Punkt :-))) Danke nochmals.
Gruß Nico
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige