MsgBox Worksheet_Activate...

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: MsgBox Worksheet_Activate...
von: Malte Ludwig
Geschrieben am: 25.07.2015 14:31:30

...bei überschrittenen Daten in Range.
Hallo ihr Lieben!
Ich möchte, dass eine Tabelle bei Aktivierung eine MsgBox ausgibt, falls in bestimmten Zellen das Datum älter ist als 90 Tage.
Folgendes habe ich geschrieben:

Private Sub Worksheet_Activate(ByVal Target As Range)
    If Intersect(Range("C11:AB11,C13:AB13,C15:AB15,C17:AB17,C19:AB19,C21:AB21,C23:AB23,C25:AB25, _
 _
C27:AB27,C29:AB29"), Target) Is Nothing Then Exit Sub
    If Target.Value <= (Date - 90) Then
        MsgBox ThisWorkbook.ActiveSheet.Name
    End If
End Sub

Folgendes ist die Fehlermeldung:
Fehler beim Kompilieren:
Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder eine Prozedur mit demselben Namen.
lg
Malte

Bild

Betrifft: AW: MsgBox Worksheet_Activate...
von: Sepp
Geschrieben am: 25.07.2015 14:36:29
Hallo Malte,
die Sub Worksheet_Activate() hat keine Parameter!

Private Sub Worksheet_Activate()
  Dim rng As Range
  
  For Each rng In Range("C11:AB11,C13:AB13,C15:AB15,C17:AB17,C19:AB19,C21:AB21,C23:AB23,C25:AB25,C27:AB27,C29:AB29")
    If rng.Value <= (Date - 90) Then
      MsgBox ThisWorkbook.ActiveSheet.Name
    End If
  Next
End Sub


Gruß Sepp


Bild

Betrifft: AW: MsgBox Worksheet_Activate...
von: Malte Ludwig
Geschrieben am: 25.07.2015 16:39:37
Danke, das hat super funktioniert!
Kurze Folgefrage:
Die Range im oberen Beitrag ist nur ein Auszug, und ich weiß bei dieser Art und Weise die Ranges aufzuschreiben nicht genau, wie ich die Bezüge in der MsgBox deklarieren kann:
Was ich machen wollte, ist folgendes:
Für alle ungeraden Zellen in den Spalten C bis AB soll die MsgBox einen anderen Text ausgeben.
Also die MsgBox für die Range "Alle ungeraden Zellen in Spalte C von C11 bis C91" soll den Inhalt der Zelle C7 wiedergeben, die MsgBox für die selben Zeilen in Spalte D soll den Inhalt der Zelle D7 wiedergeben.
Ihr braucht mir nicht alles zu verraten, ich bräuchte nur Hilfe bei der Formulierung der Ranges. Also wie schreibe ich auf "Alle ungeraden Zellen von C11 bis C91" ohne jede Zelle einzeln zu formulieren?
Vielen Dank für deine Hilfe Sepp,
liebe Grüße
Malte

Bild

Betrifft: AW: MsgBox Worksheet_Activate...
von: Sepp
Geschrieben am: 25.07.2015 16:51:33
Hallo Malte,
willst du im Extremfall wirklich über 1000 MsgBoxes wegklicken?

' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
  Dim lngCol As Long, lngRow As Long
  
  On Error Resume Next
  
  For lngCol = 3 To 28
    For lngRow = 11 To 91 Step 2
      If Cells(lngRow, lngCol).Value <= (Date - 90) Then
        MsgBox Cells(7, lngCol).Text
      End If
    Next
  Next
  
End Sub


Gruß Sepp


Bild

Betrifft: AW: MsgBox Worksheet_Activate...
von: Malte Ludwig
Geschrieben am: 25.07.2015 16:58:51
Das Problem habe ich vorhin auch schon bemerkt :D
Die Tabelle wird von mir gefüllt werden, sodass nur im Sonderfall Daten vorkommen sollten, die die Bedingung erfüllen. Zum testen benutze ich nur kleinere Ranges oder deaktiviere den Code.
Hätte nicht erwartet, dass der Code so kurz wird!
Ich probiere mal kurz rum und komme bei Fragen wieder zurück!
Vielen Dank für deine Hilfe!
Liebe Grüße Malte

 Bild

Beiträge aus den Excel-Beispielen zum Thema "MsgBox Worksheet_Activate..."