Calculate
03.12.2005 10:09:33
Friedrich
ich habe aufgrund der etwas langen Berechnungszeit meiner Formeln den Code leicht geändert, indem ich die Formeln der einzelnen Monate mit Bereichsnamen versehen habe.
Habe jetzt 2 Probleme mit u.a. Code.
1. mit Calculate funkt das PasteSpecial nicht mehr- und ohne Calculate davor wird die Datenreihe zwar übertragen, aber das Datum wird nicht als Datum sondern als Datumswert angezeigt. In einer Testmappe funkt es einwandfrei mit xlValues.
2. wo genau muß das Umschalten auf manuelle Berechnung eingefügt werden und wo wieder ausgeschaltet.
Nachdem die MsgBox des Monats angezeigt wird rechnet das Prog nachwievor komplett alle Formeln durch.
Wo liegt der Fehler?
Da die Daten lediglich zur Anzeige eines Diagramms dienen, könnte es u.U. besser sein sie in ein Array einzulesen und dort zu verarbeiten. Was meint ihr dazu?
Public <pre>
Sub DatenUebertrag(b As String)
Dim datei As String
Dim blatt As String
blatt = ThisWorkbook.ActiveSheet.name
MsgBox "Das Blatt das Daten überträgt heißt: " & blatt
Select Case b
Case "Früh": spalte = 4
Case "Spät": spalte = 5
Case "Nacht": spalte = 6
Case sondername: spalte = 7
End Select
MsgBox "Spalte: " & spalte
datei = "Statistik.xls"
If DateiVorhanden(datei) Then
MsgBox "Statistik vorhanden"
If DateiOffen(datei) Then
MsgBox "Statistik ist geöffnet und wird jetzt geschlossen !"
Workbooks("Statistik").Close False
End If
Else
MsgBox "Statistik ist nicht vorhanden"
Exit Sub
End If
' Application.ScreenUpdating = False
GetObject (Application.Workbooks("Dienstbericht").Path & "\Statistik.xls")
' Application.ScreenUpdating = True
Workbooks("Dienstbericht").Sheets("Berechnungen").Activate
Range(Cells(9, spalte), Cells(30, spalte)).Select
Selection.Copy
Workbooks("Dienstbericht").Sheets(blatt).Select
Workbooks("Statistik").Sheets("Daten").Activate
letzte = Cells(Rows.Count, 2).End(xlUp).Row + 1
MsgBox letzte
Application.Calculation = xlCalculationManual
' Application.EnableEvents = False
Sheets("Daten").Cells(letzte, 2).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
If IsDate(Cells(letzte, 2)) Then
monat = Month(Cells(letzte, 2))
MsgBox monat
Select Case monat
Case 1: Range("Januar").Calculate
Case 2: Range("Februar").Calculate
Case 3: Range("März").Calculate
Case 4: Range("April").Calculate
Case 5: Range("Mai").Calculate
Case 6: Range("Juni").Calculate
Case 7: Range("Juli").Calculate
Case 8: Range("August").Calculate
Case 9: Range("September").Calculate
Case 10: Range("Oktober").Calculate
Case 11: Range("November").Calculate
Case 12: Range("Dezember").Calculate
End Select
End If
Application.Calculation = xlCalculationAutomatic
' Application.EnableEvents = False
Application.CutCopyMode = False
Workbooks("Statistik").Close True
End Sub</pre>