Einmal mehr gibt`s Probleme. Bei einem inzwischen aufwendigen Programm gilt es, eine Vielzahl von Berechnungen durchzuführen. Derzeit geschieht das, sobald das Tabellenblatt aufgefrufen wird. [Worksheet_Activate()] Soweit so schlecht...
Zwingend notwendig ist`s jedoch, diese Berechnungen bereits bei Änderungen im Tabellenblatt durchzuführen. [Worksheet_Change()] So ich das jedoch versuche, geht`s schief. Beispielhaft hierzu einfach mal meine Absicht, Daten aus der Zelle C9 in die Zelle AQ9 zu übertragen:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("C9").Copy Destination:=Range("AQ9")
End Sub
Die Anwendung soll sowohl unter Excel 2003 als auch unter Excel 2007 lauffähig sein. Bisher scheiterte jeglicher "Versuch" daran, das z.B. Excel 2007
schlicht nicht mehr reagiert, sobald ich das betreffende Tabellenblatt aufrufe, geschweige denn ändere.
Wo liegt der Fehler? Ich denke mal, das die ein oder andere Anweisung (ByVal Target As Range) nicht richtig ist... Für Hinweise, gar des "Rätsels Lösung" bin ich natürlich dankbar.
Darüber hinaus gibt`s in diesem Zusammenhang das zweite Problem. Die beschriebenen Berechnungen sollen für bis zu 50 Tabellenblätter, immer dem gleichen
Muster entsprechend, möglich sein. Ist es dazu zwingend erforderlich in jedes dieser Blätter den dann funktionierende Code zu kopieren? Spare ich mir denn
nicht (Speicher)platz so ich z.B. folgendes hinbekomme:
Private Sub Worksheet_Change(ByVal Target As Range)
Call VKS
End Sub
VKS dann in einem einzigen Modul für alle betroffenen Blätter hinterlegt, z.B.:
Sub VKS()
Dim Stunden As Date
Stunden = Range("A1").Value
Range("B1").Value = TimeSerial(Hour(Stunden) - (Minute(Stunden) >= 30), 0, 0)
End Sub
Dieser beabsichtigte "Verweis" von einem Private Sub an ein Sub funktioniert bisher nun so gar nicht...
Na, auch hier gilt "für sachdienliche Hinweise", äh, für des Rätsels Lösung sage ich schon mal hier schlicht daaanke!!!
Das soll`s dann aber gewesen sein.
Gruß und BESTEN Dank für Eure Mühe
Uwe