AW: "Berechnen" - Status abfragen
kdosi
Hallo Martin, ich denke solche Eigenschafft (wie "EsGibtZellenZumCalculation") gibt es nicht. Wenn ich es richtig verstehe, dann kann man Excel so einstellen, das Calculation entweder automatisch. oder manuell oder ... (Tools/Options). Also falls Du die Calculation auf manuelle gestellt hast )wie ich :-), dann macht er es aleine, also dass heisst fuer mich dass er immer selber entscheidet, was zu "calculate" ist und was nicht.
Man kann aber den Calculate Event abfangen, und "etwas" dabei machen. Es stehen volgenden Event Handlers zu verfuegung :
Class DieseArbeitsmappe ->
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
hier kann man den Calculate Evnet beliebigen Sheets abfangen
Class Tabelle ->
Private Sub Worksheet_Calculate()
hier kann man den Calculate Event fuer einen bestimmten Sheet (fuer den, wo der Code lauft)
Und man kann noch den Calculate Evnet von Chart und Application Objekten abfangen. Dazu muss man sich nur einen nueuen Class Modul anlegen, z.B. so fuer Application Object :
' Code im Class Modul, benannt als CAppExcel
Option Explicit
Public WithEvents AppExcel As Application
Private Sub AppExcel_SheetCalculate(ByVal Sh As Object)
MsgBox "SheetCalculate ..."
End Sub
Private Sub Class_Initialize()
Set AppExcel = Application
End Sub
' in ein Modul kommt
Option Explicit
Sub AppExcelClassTest()
Dim AppExcel As CAppExcel
Set AppExcel = New CAppExcel
End Sub
Fuer den Chart Object sieht es sehr ehnlich aus :
' in Class Modul namens CChart kommt
Option Explicit
Public WithEvents SomeChart As Chart
Private Sub Class_Initialize()
' hier koennte man z.B. einen neuen Chart erstellen
Set SomeChart = Application.Charts.Add(, , 1)
With SomeChart
.SetSourceData Worksheets(1).Range("a1:e2"), xlByRows
.Name = "SomeChart aus der Classe CChart"
.Deselect
End With
End Sub
Private Sub SomeChart_Calculate()
Static counter
counter = counter + 1
MsgBox "SomeChart_Calculate Event ist zum " & counter & " mal ausgeloest worden ", _
vbInformation, VBA.Now
End Sub
' und in ein gewohnliches Modul kommt
Sub ChartClassTest()
Dim ChartTest As CChart
Set ChartTest = New CChart
ChartTest.SomeChart.SetSourceData Worksheets(1).Range("c4:f5")
End Sub
In dem jeweiligen Class Modul sind oben zwei Combos, aus den linken waehle z.B. im Class Modul CChart SomeChart und in dem rechten wirst Du die vorhandenen Events sehen.
Also ich weiss nicht ob Du jetzt glucklicher bist als am Anfang :-). Gruss kdosi aus cz