205 Aufrufe
Gefragt in Tabellenkalkulation von zorro911 Einsteiger_in (14 Punkte)

Hallo,

wir möchten in unserem Betrieb eine freigegebenes Excel-Workbook automatisch für alle User aktualisieren. Wenn wir eine Datei mit nur einem Worksheet verwenden klappt es mit folgendem VBA:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
Dim cel As Range
Set rng = ActiveSheet.Range("A1:G34")
For Each cel In rng.Cells
If cel.Address = Target.Address Then
ActiveWorkbook.Save
Exit For
End If
Next cel
Set cel = Nothing
Set rng = Nothing
End Sub

Nun möchten wir aber mit mehreren Worksheets (Montag, Dienstag,..., Freitag) in dem Workbook arbeiten. Mit dem Befehl:

Private Sub Workbook_SheetSelectionChange

funktioniert es leider nicht. Was machen wir falsch? Danke für Eure Hilfe.

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo,

ihr müsst den Code für Private Sub Workbook_SheetSelectionChange in das VBA-Projekt der Arbeitsmappe schreiben, dann sollte es klappen.

Am besten danach den Code aus dem VBA-Projekts des Arbeitsblattes löschen.

Gruß

M.O.

0 Punkte
Beantwortet von zorro911 Einsteiger_in (14 Punkte)

Wenn ich in der Ebene der Arbeitsmappe folgenden Code eingebe:

Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Target As Range)
Dim rng As Range
Dim cel As Range
Set rng = ActiveSheet.Range("A1:G34")
For Each cel In rng.Cells
If cel.Address = Target.Address Then
ActiveWorkbook.Save
Exit For
End If
Next cel
Set cel = Nothing
Set rng = Nothing
End Sub

Erscheint der Hinweis:

"Fehler beim Kompilieren
Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen"

Wo liegt der Fehler im Code???

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
ausgewählt von zorro911
 
Beste Antwort

Hallo,

wähle in dem VBA-Projekt der betreffenden Arbeitsmappe das Sheet-Change-Ereignis aus, dann siehst du, dass die Deklaration wie folgt aussehen muss:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Ändere die Deklaration entsprechend und dann sollte das Makro funktionieren.

Gruß

M.O.

0 Punkte
Beantwortet von zorro911 Einsteiger_in (14 Punkte)
Hat funktioniert! :-) You made my day!! Danke & Gruß
...