677 Aufrufe
Gefragt in Tabellenkalkulation von
Ich habe ein Programm mit VBA geschrieben, das unter verlaub, nicht wenig Prozeduren enthält, welche jede für sich zu bestimmten Zeitpunkten durchlaufen werden. (leider zu groß um das hier zu posten)

Die gesamten Prozeduren liefen jetzt seit mehreren Wochen tadellos und ohne Probleme. Seit heute, und ich habe keine Änderungen am Programm vorgenommen, erscheint während des Speichervorganges eine Fehlermeldung:
"...kann mit den verfügbaren Resourcen nicht ausgeführt werden"

Was soll das? Jemand ne Idee was das sein kann? Einfach nur Überlastung des lokalen Servers?

9 Antworten

0 Punkte
Beantwortet von
Hallo mabon :-)

Zitat
kann mit den verfügbaren Recourcen nicht ausgeführt werden

Deine Antwort ist deine Frage,eindeutiger geht's wohl nimmer!

Nutze die Windows Recourcen überlegt!
Programmiere Recourcen sparend!
Nur 1 Excelinstanz!

Gruß Nighty
0 Punkte
Beantwortet von
Hallo mabon :-)

1)
Mehrdimensionale Array's sprengen schnell den Speicher

2)
Ersetze Volatile Funktionen

Gruß Nighty
0 Punkte
Beantwortet von
Hallo mabon :-)

oder auch!

zu Punkt 2)
Stell die Automatische Berechnung aus und nutze Ereignisse
zur einmaligen Berechnung!

Gruß Nighty
0 Punkte
Beantwortet von
Hallo mabon :-)

oder auch!

Allgemein!
Der heutige Wahnsinn alles und jeden als Object zu deklarieren!
Ich würde mal grob schätzen das 90% der Objecte überflüssig sind!

Objecte sind nach gebrauch frei zugegeben!
Hier ist eine einfache vorgehendsweise zu beachten!
Werden Eigenschaften des Objectes gebraucht!
Ja   =Objecterstellung
Nein=Es reich eine andere Deklaration,Variant,String etc.

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Nighty. Ja richtig, meine Frage ist schon die Antwort. Allerdings war mir nicht ganz klar, woran das liegen könnte, zumal es die letzten Wochen keine Probleme gab und jetzt plötzlich auftaucht.

Kannst Du mir evtl. ein Beispiel nennen, wie ein Ereignis für Neuberechnung aussieht? Stehe was den Punkt angeht noch ein bisschen auf dem Schlauch und finde irgendwie auch nichts adäquatest im Web
0 Punkte
Beantwortet von
Ich nochmal. Ich habe übrigens an einigen Positionen bewusst Bereiche deklariert und benutzt und damit einen Performanceschub von +knapp 66 % erreicht.

Vorher mit select, copy und paste ware meine Anwendung noch mehr ollen langsam. Kann es sein, dass das mit den Bereichen erst dann wieder negative Auswirkungen hat, wenn man es zu sehr übertreibt?
0 Punkte
Beantwortet von
Hallo mabon :-)

Bei diesem Makro ist so ziemlich alles Falsch!
Objecterstellung für einen Mappennamen,Unsinn
Objecterstellung für einen Bereich bei einer überlasteten Datei, ist vermeidbar
Objecte werden nicht freigegeben bei Beendigung
Löschen eines objectes >  Set objectName= Nothing

Das Fehlerbehaftete Makro!
[code]Sub ObjecteJaNein()
Dim Daten As Object, Rangebereich As Object
Set Daten = Workbook("Mappe1")
Set Rangebereich = Worksheet(1).Range("B1:B100")
End Sub
[/code]
Einfache Variablen werden hingegen bei Beendigung des Makros automatisch gelöscht,solange sie Statisch oder Local sind

Das ChangeEreignis für einen möglichen Automatismus
um die Berechnung ein bzw auszuschalten
Einzufügen Alt+F11/Projectexplorer/Deine Tabelle
Target.Row > 1 bedeutet ab Zeile 2
Target.Column=1 bedeutet Spalte A

Wird nun eine Händiche Eingabe in Spalte A ab Zeile 2 genutzt
so wird das Makro ausgelöst

Du brauchst also mindestens eine Zelle die Händich befüllt wird
um das Makro auszulöst(oder eine Spalte/Zeile/bereich etc)

[code]Private Sub Worksheet_Change(ByVal Target As Range)
    Application .EnableEvents = False
    If Target.Row > 1 And Target.Column = 1 Then
        Application.Calculation = xlCalculationAutomatic
        Application.Calculation = xlCalculationManual
    End If
    Application .EnableEvents = True
End Sub[/code]

Gruß Nighty
0 Punkte
Beantwortet von
Hallo mabon :-)

Zum lernen sollte der Schwerpunkt sein!

Variablen
Objecte
Klassenmodule

Da brauchst auch keine Bücher!
Google ist dein bester Freund
Es finden sich dort wirklich gut gemachte Erklärungen und auch sehr gute Kurse!

Gruß Nighty
0 Punkte
Beantwortet von
Vielen Dank für Deine Hilfe
...