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
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Range("C9").Copy Destination:=Range("AQ9")
Application.EnableEvents = True
End Sub
Zu Problem 2:
Wo steht die Routine VKS? Sie gehört in ein allgemeines Modul.
Schau dir doch auch mal die Ereignisprozedur Workbook_SheetChange an.
Wenn du hier im Archiv nach Workbook_SheetChange suchst, findest du sicher viele Beispiele.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
In "DieseArbeitsmappe":
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "DiesesBlattNicht" Or Sh.Name = "DiesesBlattNicht2" Then Exit Sub
Call VKS(Sh.Name)
End Sub
In Modul1:
Sub VKS(Blattname)
Dim Stunden As Date
Application.EnableEvents = False
Stunden = Worksheets(Blattname).Range("A1").Value
Worksheets(Blattname).Range("B1").Value = TimeSerial(Hour(Stunden) - (Minute(Stunden) >= 30), 0, _
0)
Application.EnableEvents = True
End Sub
Gruß
Reinhard