Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Gruß
Uwe

Feedback? Aber selbstverständlich ;)
Antworten 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
Antworten 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 ?
Gruß
Uwe

Feedback? Aber selbstverständlich ;)
Antworten 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
Antworten 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
Antworten 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
Gruß
Uwe

Feedback? Aber selbstverständlich ;)
Antworten Top
#8
Hallo Uwe,

vielen herzlichen Dank.

:18:

LG.

Peggy
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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