Langsame Excel-Datei
#21
Wieder vielen Dank für die neuen Antworten!

@Egon12: Wenn ich deinen Vorschlag richtig lese, geht es dabei um dieselbe Sache, die Slowboarder angesprochen hat, oder? Das habe ich wie gesagt schon durch eine nicht volatile Funktion ersetzt, das hat (möglicherweise? schwer zu sagen) geholfen, aber es war noch nicht genug, um die Bedienung flüssig zu machen.

@Klaus-Dieter: Gibt es denn abgesehen von "Bereich.Verschieben" noch weitere volatile Formeln da? Diese habe ich wie gesagt ersetzt und keine anderen gefunden, siehe #14. 

Was die Struktur angeht: Das wesentliche sind die Zeilen 1-40, da läuft 99% der Arbeit ab. Die sind auch ziemlich sorgfältig aufgebaut, würde ich sagen. Da drunter die Diagramme und Einstellungszellen könnte man ordentlicher sortieren, ja, aber da das eigentlich ja keine öffentliche Datei ist, also nur ich selbst damit arbeite und ich genau weiß, was wo ist, habe ich es bisher nicht für nötig gehalten, das zu verbessern. Aber das ist ja dann ohnehin eher eine ästhetische und weniger funktionelle Sache, oder?

@Nuss-imT: Auf meinem Desktop-PC läuft es deutlich flüssiger, weil der einfach mehr Rechenkapazitäten hat. Aber die Noteneintragung erfolgt vor allem zwischendurch, damit die Erinnerung noch frisch ist, daher würde ich es auch gerne für den Laptop verbessern. 

@EA1950: Die Leistungsüberprüfung hatte ich probiert, ja. Hat auch einiges gefunden, geholfen hat die Änderung aber nicht (bzw. wahrscheinlich schon, aber es hat noch nicht gereicht). 
Das Grafikobjekt brauche ich schon unbedingt, ja. Beziehungsweise, ich wüsste nicht, wie man es anders machen sollte. Es ist sehr hilfreich, beim Arbeiten alles auf einen Blick zu haben, möchte ich die Bewertungstabelle usw. auch sehen, wenn ich in den oberen Zellen arbeite. Das Problem ist, dass Klassenarbeiten natürlich unterschiedlich viele Teilaufgaben haben, sodass es mal weiter rechts oder links sein muss. Daher ist diese Kameravariante für mich ideal, wenn man es geschickt anders machen könnte, wäre das natürlich auch gut. Evtl., wenn man es so macht wie es auch andere vorgeschlagen haben, dass das Blatt nicht vorgefertigt ist sondern dynamisch erzeugt wird - ich zumindest weiß aber nicht, wie sowas geht.

@Andreas: Ich habe dein Makro mal eingefügt und es ausprobiert. Was die Geschwindigkeit angeht ist damit das Problem absolut gelöst, danke!  Allerdings: Jetzt fehlt mir natürlich die Funktion der Kamera. Ich habemeine Antworten zu den anderen Beiträgen mal stehen lassen, auch wenn es dadurch in gewisser Weise obsolet ist. In der Antwort zu EA1950 habe ich gerade beschrieben, wofür ich die Kamera verwende.  Meine Frage jetzt also wäre: 

Wenn ich ohne die Kamerafunktion auskommen will, müsste die Tabelle oben nicht ausfüllbar sein von I-DD, sondern nur in dem Bereich, den ich tatsächlich brauche und dann müsste der Bereich C43:H80 rechts daneben stehen. Entsprechend der Zahl in D73 müsste dann die Tabelle automatisch angepasst und der genannte Bereich verschoben werden. Problematisch ist dabei sicherlich, dass sich an anderer Stelle auf diese Zellen bezogen wird, die Formeln dürfen also nicht den Bezug verlieren, auch wenn dort alles verschoben wird. Das hört sich für mich sehr kompliziert an (daher bin ich ja überhaupt erst auf die Kameralösung gekommen). Geht das irgendwie? Oder habt ihr einen anderen Vorschlag, wie man das gut lösen könnte?
Wenn es gar nicht anders geht würde ich überlegen, ob ich darauf verzichte und einfach runterscrolle, wenn ich etwas davon sehen möchte, aber rein von der Funktion her wäre die Datei dann schlechter als vorher - aber dafür schneller.
Antworten Top
#22
Hallo Martina,

für mich stellt sich die Frage, ob diese Anzeige (Kamera) ständig aktualisiert werden muss. Ansonsten könnte man ein UserForm dafür missbrauchen. Was hältst du davon?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#23
Hi

Volatile Funktionen sind:

a) Funktionen, die einen Zellbezug errechnen, so dass Excel nicht direkt aus dem reinen Formeltext herauslesen kann, welche Zellen verwendet werden:
- Indirekt
- Bereich.Verschieben
Index berechnet zwar auch einen Zellbezug, aber hier ist der berechnete Bezug immer eine Teilmenge des ersten Parameters, deswegen ist hier die Volatilität unnötig.

b) Funktionen die bei jeder Änderung aktualisiert werden oder keinen Parameter haben, über den eine Änderung ausglöst wird.
- Heute()
- Jetzt()
- Zufallszahl()
- Zufallsbereich(...)

Bei der Suche nach Volatilen Funktionen muss man immer auch in den Namen, bedingten Formaten und der Datenüberprüfung nachschauen, hier werden die auch gerne verwendet und Bremsen dann auch.


Ersatz für die verknüpfte Bildkopie 

Ich sehe da zwei Alternativen:

a) Versuche, mit einer Bildkopie auszukommen. 
Du kannst den Bereich, der dir angezeigt wird, recht einfach in der Bearbeitungszeile änden, wenn du die Grafik markiert hast.
Oder du erstellst dir bei Bedarf immer eine neue Kopie, die du dann wieder löschst, das ist ja schnell gemacht.

b) Erstelle über Ansicht - Fenster zu der Exceldatei ein zweites Fenster
Dort kannst du dir dann die gewünschten Inhalte anzeigen lassen.
Insbesondere, wenn du zwei Bildschirme hast, wäre das die beste Möglichkeit.
Aber auch ohne zweiten Bildschirm kann man sich die beiden Fenster ja einfach nebeneinander anzeigen lassen (nach oben ziehen und Platzierung auswählen.
Hat auch den Vorteil, dass du dort scrollen und arbeiten kannst.

Gruß Daniel
Antworten Top
#24
Hallo Martina,

ich stimme Daniel zu, probier es erstmal mit einem 2ten Fenster, das ist von der Performance her die beste Lösung.

Wenn das nicht praktikabel ist, dann denke ich musst Du mit nur einem "Grafikobjekt" in der Datei leben.

Dazu ist ein wenig Vorarbeit von Dir nötig. Zuerst entfernst Du alle Grafikobjekte mit meinem letzten Makro.
Dann benennst Du in jedem Blatt einen Zellbereich mit Notenschnitt, wichtig dabei ist das der Bereich der Name des Blattes ist in dem er erstellt wird.
   

Damit das etwas einfacher geht kopierst Du erstmal diese 2 Makros in ein reguläres Modul.
Dann wählst Du die Zellen die als Notenschnitt angezeigt werden sollen und läßt das Makro "BenenneLokalenNotenschnittBereich" laufen. Du siehst nix, das macht nur den Namen.

Code:
Sub BenenneLokalenNotenschnittBereich()
  Dim Ws As Worksheet
  Set Ws = ActiveSheet
  Ws.Names.Add "Notenschnitt", Selection
End Sub

Sub ZeigeNotenschnitt()
  Const Title = "ZeigeNotenschnitt"
  Dim Ws As Worksheet
  Dim Sh As Shape
  Dim P As Picture
  Dim SaveSel As Range
  Set SaveSel = Selection
  'Lösche alle Notenschnitte
  For Each Ws In Worksheets
    For Each Sh In Ws.Shapes
      If InStr(1, Sh.Name, "Notenschnitt", vbTextCompare) > 0 Then
        Sh.Delete
      End If
    Next
  Next
  'Fehler aus, evt. ist keiner da
  On Error GoTo Errorhandler
  'Bereich wählen, ggf. sind wir in einer Tabelle da könne wir kein Bild einfügen!
  Range("Notenschnitt").Select
  On Error GoTo 0
  Range("Notenschnitt").Copy
  'Bild als Link einfügen
  Set P = ActiveSheet.Pictures.Paste(Link:=True)
  Application.CutCopyMode = False
  'Hintergrund weiß
  P.Interior.ColorIndex = 0
  'Umbenennen
  P.Name = Replace(P.Name, "Picture", "Notenschnitt")
  'Wieder zur Zelle zurück
  SaveSel.Select
  'Bild rechts daneben schieben
  P.Top = SaveSel.Top
  P.Left = SaveSel.Offset(, 1).Left
  Exit Sub
Errorhandler:
  MsgBox "Keinen Bereich 'Notenschnitt' gefunden", vbExclamation, Title
End Sub

Wenn Du nun in irgendeines der Blätter gehst wo so ein Bereich drin ist, dann wählst Du eine Zelle und läßt das Makro " ZeigeNotenschnitt" laufen.
Entweder gibt es eine Fehlermeldung oder der Bereich wird rechts neben der Zelle angezeigt.

Andreas.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste