Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Änderung für alle Tabellenblätter übernehmen | Herbers Excel-Forum


Betrifft: Änderung für alle Tabellenblätter übernehmen von: Thomas
Geschrieben am: 14.01.2010 09:11:14

Hallo liebe VBAler

Ich hab eine Excel Datei mit 12 Tabellenblätter (Januar-Dezember).
Ände ich nun z.B. im Tabellenblatt Januar in Spalte A und B etwas, oder füge/lösche eine Zeile ein, dann soll er dies für alle anderen Tabellenblätter übernehmen.

Bis jetzt habe ich dies über Worksheet_SelectionChange gemacht.
Dort frag ich mit target.row und target.column ab in welcher Spalte ich bin. Ist A oder B, dann selektiert er alle Tabellenblätter und wenn ich dann was ändere, dann übernimmt er dies für alle Blätter.

ALLERDINGS, hab ich in den Tabellenblätter auch Worksheet_BeforeDoubleclick, Activate und Deactivate.
Irgendwie scheint dies zusammen aber Probleme zu machen (meine Vermutung).
Wenn ich zum ersten mal in Spalte A oder B klicke dann selektiert er alle Blätter. Klick ich dann in Spalte C und nochmal in Spalte A oder B dann macht er nichts mehr.

Meine Frage ist nun, ob ich die Änderungen für alle Tabellenblätter auch ohne Selection_Change machen kann. Gibt es hierfür auch andere Ansätze. Hab auch schon gegoogle aber immer nur auf selection_change gestossen.
Vielleicht, bzw. ich hoffe, jemand kennt eine Alternative.

Schon mal besten Dank im voraus.

gruß
Thomas

  

Betrifft: AW: Änderung für alle Tabellenblätter übernehmen von: Hajo_Zi
Geschrieben am: 14.01.2010 09:29:58

Hallo Thomas,

benutze das Change Ereignis das wird ausgelöst nach einer Änderung.

GrußformelHomepage


  

Betrifft: AW: Änderung für alle Tabellenblätter übernehmen von: fcs
Geschrieben am: 14.01.2010 10:37:20

Hallo Thomas,

da muss man die Ereignismakros zeitweise deaktivieren und den Status der Gruppierung und ggf. auch das zum Zeitpunkt der Gruppierung aktive Blatt in Globalen Variablen merken und prüfen.

Schaut dann Code-mäßig etwa wie folgt aus.

Gruß
Franz

Option Explicit
'Beispielcode in allen Tabellenblättern

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column <= 2 And Target.Row > 1 And bolGrouped = False Then 'Spalte A oder B gewählt
    'Alle Blätter Gruppieren
    Application.EnableEvents = False
    ActiveWorkbook.Sheets.Select
    Application.EnableEvents = True
    Set wksAktiv = Me
    bolGrouped = True
  ElseIf Target.Row = 1 Then
    'Gruppierung aufheben bei Klick in Zelle in Zeile 1
    Application.EnableEvents = False
    If Not wksAktiv Is Nothing Then wksAktiv.Select
    bolGrouped = False: Set wksAktiv = Nothing 'Zurückseten der Gruppierungsmerker
    Application.EnableEvents = True
  End If
End Sub

Private Sub Worksheet_Activate()
  MsgBox Me.Name & " ist aktiv"
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  MsgBox Me.Name & " - Doppelklick Zelle " & Target.Address
End Sub

Private Sub Worksheet_Deactivate()
  'Zurückseten der Gruppierungsmerker, wenn Gruppierung durch Wahl eines anderen _
      Tabellenblatts aufgehoben wird
  bolGrouped = False: Set wksAktiv = Nothing
  
  MsgBox Me.Name & " wurde deaktiviert"
End Sub



'Code/Variablendeklaration in einem allgemeinen Modul

Option Explicit
Public bolGrouped As Boolean 'Merker für Gruppierungs-Status
Public wksAktiv As Worksheet 'Merker für das zum Zeitpunkt Gruppierung aktive Blatt




  

Betrifft: AW: Änderung für alle Tabellenblätter übernehmen von: Thomas
Geschrieben am: 14.01.2010 11:40:38

Danke schonmal. Werd das nach dem Mittagessen testen.
Vielen Dank euch beiden !

gruß
Thomas


Beiträge aus den Excel-Beispielen zum Thema "Änderung für alle Tabellenblätter übernehmen"