Hallo Freunde
Ich möchte, dass mein Excel generell neue Mappen mit „Berechnung automatisch“ öffnet. Dies habe ich auch dem entsprechenden XLT mitgeteilt, aber es klappt einfach nicht.
Woran liegt das wohl und kann ich es notfalls mit einem Makro erzwingen, das aber bei jeder neuen Mappe laufen muss? Wo schreibe ich das hin?
Erich
Hallo Erich,
ähm Extras/Optionen/Berechnen = setzen hilft nicht weiter?
Viele Grüße vom Harald aus Wiesbaden
Hallo Harald
ähm Extras/Optionen/Berechnen = setzen hilft nicht weiter?
Eben leider nicht! Beim nächsten Start ist alles vergessen!
Erich
Ich möchte, dass mein Excel generell neue Mappen mit
„Berechnung automatisch“ öffnet. Dies habe ich auch dem
entsprechenden XLT mitgeteilt, aber es klappt einfach nicht.
Woran liegt das wohl und kann ich es notfalls mit einem Makro
erzwingen, das aber bei jeder neuen Mappe laufen muss? Wo
schreibe ich das hin?
Hi Erich,
seit 3-4 Jahren kenne ich Excel, d.h. durch Festplattenärger wurde es schon mehrmals neuinstalliert. Jahrelang war da immer bei Standardinstallation „automatisches Berechnen“ voreingestellt. Mein derzeitiges Excel2000, ist warum auch immer, ich weiß nicht was geschah, so eingestellt dass jede Datei mit „manueller Berechnung“ geöffnet wird, k.A. warum. Nervt 
Wennn eine Neuinstallation bei dir nichts bringt dann ist nachfolgend ein Code der bei jeder Öffnung einer Datei einen Verweis setzt. Da ich von Klassenmodulen null Ahnung habe musste dir das selbst umstricken damit immer auf „automatisches Berechnen“ umgestellt wird.
Gruß
Reinhard
In DieseArbeitsmappe:
Option Explicit
Private objApplication As clsApplication
Private Sub Workbook\_Open()
Set objApplication = New clsApplication
Set objApplication.prpApplication = Application
End Sub
Mit Einfügen–Klassenmodul ein Klassenmodul mit dem Namen „clsApplication“ erzeugen und folgender Code.
Option Explicit
Private WithEvents mobjApplication As Application
Public Property Set prpApplication(objApplication As Application)
Set mobjApplication = objApplication
End Property
Private Sub mobjApplication\_NewWorkbook(ByVal Wb As Workbook)
Call prcAddReverence(Wb)
End Sub
Private Sub mobjApplication\_WorkbookOpen(ByVal Wb As Workbook)
Call prcAddReverence(Wb)
End Sub
und dann in einem Modul:
Option Explicit
Private Const FM20\_GUID = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}"
Public Sub prcAddReverence(objWorkbook As Workbook)
Dim intIndex As Integer
Dim blnFound As Boolean
On Error GoTo err\_exit
With objWorkbook.VBProject.References
For intIndex = 1 To .Count
If .Item(intIndex).GUID = FM20\_GUID Then
If .Item(intIndex).IsBroken Then
.Remove .Item(intIndex)
Else
blnFound = True
End If
End If
Next
If Not blnFound Then \_
.AddFromGuid GUID:=FM20\_GUID, Major:=2, Minor:=0
End With
Exit Sub
err\_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & \_
vbLf & Err.Description, vbCritical, "Fehler"
End Sub
Hallo Reinhard
Endlich eine mitfühlende Seele!
Ich benutze Excel seit über 15 Jahren, da war immer „automatisch“ als default. Mit Excel 2003 eben nicht mehr!
Nervt
Ja, sehr !
Wennn eine Neuinstallation bei dir nichts bringt
Habe ich versucht, nützt nichts!
Ich werde dein Makro ausprobieren, muss es jedoch noch ganz verstehen!
Vorerst vielen Dank
Erich
Ich werde dein Makro ausprobieren, muss es jedoch noch ganz
verstehen!
Hallo Erich,
so richtig verstehen kann ich es auch nicht 
Die anderen Codes bleien wie beschrieben, folgenden Code in Modul1 der personl.xlshabe ich abgeändert und nun steht die Berechnung wie gewünscht auf „automatisch“.
Option Explicit
Private Const FM20\_GUID = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}"
Public Sub prcAddReverence(objWorkbook As Workbook)
Dim intIndex As Integer
Dim blnFound As Boolean
On Error GoTo err\_exit
With objWorkbook.VBProject.References
For intIndex = 1 To .Count
If .Item(intIndex).GUID = FM20\_GUID Then
If .Item(intIndex).IsBroken Then
.Remove .Item(intIndex)
Else
blnFound = True
End If
End If
Next
If Not blnFound Then \_
.AddFromGuid GUID:=FM20\_GUID, Major:=2, Minor:=0
End With
objWorkbook.Application.Calculation = xlCalculationAutomatic
Exit Sub
err\_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & \_
vbLf & Err.Description, vbCritical, "Fehler"
End Sub
Gruß
Reinhard