Aktuell kann es Probleme bei der Anmeldung mit dem Chrome oder Edge Browser geben. Ihr müsstet in die Einstellungen des Browsers gehen und Cache, Cookies und sofern vorhanden, gespeicherte Passwörter vom CEF löschen oder alternativ auf einen anderen Browser ausweichen. Ursache sind vermutlich kürzliche Browserupdates. x

Zeitmakro plus Zellabfrage
#1
Hallo,

habe folgende Formel in meiner Tabelle hinterlegt:

Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Worksheets("Tabelle1").Unprotect "123"
Application.ScreenUpdating = False
If Not (Intersect(Range("B:B"), Target) Is Nothing) Then Target.Offset(0, -1) = Now()
Application.ScreenUpdating = True
ThisWorkbook.Worksheets("Tabelle1").Protect "123"

End Sub

Nun soll hier aber auch noch folgendes eingebaut werden:

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("d1")) Is Nothing Then Exit Sub

Vorlageöffnen

End Sub

Ich weiß bloß nicht wo und wie. Kann mir da jemand helfen? Wäre Super.

Vielen Dank im Voraus.

LG.

Peggy
Top
#2
Hallo Peggy,
ich würde das so machen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCall As Range
Set rngCall = Range("D1")
   
   ThisWorkbook.Worksheets("Tabelle1").Unprotect "123"
   Application.ScreenUpdating = False
   If Not (Intersect(Range("B:B"), Target) Is Nothing) Then Target.Offset(0, -1) = Now()
   Application.ScreenUpdating = True
   ThisWorkbook.Worksheets("Tabelle1").Protect "123"
   
   If Not Intersect(Target, rngCall) Is Nothing Then
       Call Vorlageöffnen
   End If

End Sub
Top
#3
Hallo Uwe,

habe Deinen Code in meine Tabelle eingefügt.

In D1 erscheint bei Tageswechsel auch eine 1, aber das Makro startet nicht automatisch.

Huh

LG.

Peggy
Top
#4
Hallo Peggy,
das Makro startet dann automatisch,, wenn, entweder in Spalte B oder in Zelle D1 etwas geändert / eingetragen wird.
Das haben doch deine Vorgaben auch so gemacht ? 
Was meinst du mit Tageswechsel? Steht bei D1 eine Formel drin ?
Top
#5
Hallo Uwe,

ja in D1 steht eine Formel, wenn ein Tageswechsel stattfindet, ändert sich dort die Zahl von 0 auf 1.

LG.

Peggy
Top
#6
Hallo Uwe,

erst einmal vielen Dank für Deine Hilfe.

Habe es jetzt mit

Private Sub Worksheet_Change(ByVal Target As Range)

ThisWorkbook.Worksheets("Tabelle1").Unprotect "123"
Application.ScreenUpdating = False
If Not (Intersect(Range("B:B"), Target) Is Nothing) Then Target.Offset(0, -1) = Now()
Application.ScreenUpdating = True
ThisWorkbook.Worksheets("Tabelle1").Protect "123"

If Cells(1, 4).Value <> curWert Then
Call Vorlageöffnen
curWert = Cells(1, 3).Value
End If

End Sub

und
Option Explicit

Dim curWert As String

Private Sub Worksheet_Activate()
curWert = Cells(1, 4).Value
End Sub


hinbekommen.

Jetzt wäre es nur noch cool, wenn er die Datei mit Dateinamen aus D3 nach Ablauf des Makros schließen würde.

LG.

Peggy
Top
#7
Hallo,
es wäre wichtig zu wissen, in welcher Form der Zellwert in D3 vorhanden ist.
Entspricht er tatsächlich dem Workbook-Namen, so wie du geschrieben hast, also ohne Pfad?
Dann dürfte es so funktionieren:
Code:
   Workbooks(ThisWorkbook.Sheets("Tabelle1").Range("D3").Text).Close savechanges:=False
Top
#8
Hallo Uwe,

vielen herzlichen Dank.

:18:

LG.

Peggy
Top
#9
Hallo,

dachte es funktioniert so, aber leider...

Mein Code in der Tabelle sieht wie folgt aus:

Private Sub Worksheet_Change(ByVal Target As Range)
 
  ThisWorkbook.Worksheets("Tabelle1").Unprotect "123"
  Application.ScreenUpdating = False
  If Not (Intersect(Range("B:B"), Target) Is Nothing) Then Target.Offset(0, -1) = Now()
  Application.ScreenUpdating = True
  ThisWorkbook.Worksheets("Tabelle1").Protect "123"
 
  If Cells(1, 4).Value <> curWert Then
      Call Vorlageöffnen
   curWert = Cells(1, 3).Value
  End If

End Sub

Er soll das Makro Vorlage öffnen nur öffnen, wenn sich die Zelle D1 (normal 0, bei Tageswechsel dann 1) ändert. Das macht es auch.
Ab die Vorlage wird auch geändert, wenn sich die Datums / Uhrzeitanzeige in C1 jede Minute ändert und das ist falsch.
Habe die Zeile

curWert = Cells(1, 3).Value

auch schon auf
curWert = Cells(1, 4).Value

zu Testzwecken abgeändert, trotzdem wird die Vorlage auch bei Änderung von C1 geöffnet.

Übrigens sind in einem Modul folgende Codes hinterlegt:

Option Explicit

Dim curWert As String

Private Sub Worksheet_Activate()
curWert = Cells(1, 4).Value
End Sub


Huh  Huh  Huh

:39:  :69:

LG.

Peggy
Top
#10
Hallo Peggy,

wenn in Zelle D1 eine Formel steht, warum nimmst Du dann nicht das Calculate-Ereignis? Und könntest Du für deine Codes den Code-Tag verwenden?
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste