Registriert seit: 23.09.2014
Version(en): 2010
Hallo, komme leider bei meinem Problem einfach nicht mehr weiter. Ich möchte das durch mein VBA-Code eine bestimmte Zelle, hier die Zelle("J8") mit 1 subtrahiert wird. Mein Code: Code: Private Sub Worksheet_Change(ByVal Target As Range) If DieseArbeitsmappe.altWert <> Range("J8") Then Dim str_Date As String, sh As Worksheet 'Range("J8").Value Const str_path As String = "X:\Groups\Allgemein\Shopfloor\Berichte\Wochenbericht\" '"C:\Temp\" Set sh = ActiveSheet With Sheets("KW_Auswahl") str_Date = Range("J8") Sheets(Array("KW_Auswahl", "A", "B", "C")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ str_path & "Wochenbericht_" & str_Date & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False 'sh.Activate End With DieseArbeitsmappe.altWert = Range("J8") End If End Sub
Dieser Code speichert einige Tabellen (KW_Auswahl,A,B,C) in PDF ab sobald sich die Kalenderwoche ändert. Jedoch wird die KW von der aktuellen Woche gespeichert, ich möchte das die KW von der vorherigen KW gespeichert wird und nicht von der aktuellen. Information: In der Zelle ("J8") steht die Kalenderwoche die durch die Zelle ("C8") erzeugt wird, falls das wichtig sein sollte. Ich hoffe ihr könnt mir hierbei weiterhelfen... claudia
Registriert seit: 10.04.2014
Version(en): Office 2007, 2016, Win 10 64 bit
Hi Claudia,
vielleicht so: str_Date = Range("J8") - 1
Mit freundlichen Grüßen :) Michael
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Claudia,
befindet sich in Zelle J8 eine Formel?
Wird in Zelle C8 eine Eingabe manuell oder per Code gemacht?
Gruß Atilla
Registriert seit: 23.09.2014
Version(en): 2010
17.12.2014, 13:51
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2014, 13:59 von claudia.)
@zwergel nein funktioniert leider nicht so habe ich schon ausprobiert
@atilla Ja in der Zelle J8 befindet sich folgende Formel das die Kalenderwoche erzeugt wird -> Kalenderwoche(C8)
und in der Zelle C8 steht die Formel für HEUTE()
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Claudia,
das geht so nicht.
Beschreib bitte mal, wie der Ablauf genau aussieht. Du öffnest die Datei und dann wird die Formel Heute() neu berechnet, und wenn die Kalenderwoche sich ändert soll dann automatisch gespeichert werden?
Gruß Atilla
Registriert seit: 23.09.2014
Version(en): 2010
17.12.2014, 15:00
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2014, 15:16 von claudia.)
Ganz genau,
beim Öffnen der Datei wird die Formel Heute() neu berechnet, sobald sich die Kalenderwoche ändert werden bestimmte Tabellen in PDF umgewandelt und gespeichert. Bsp.: Ich öffne am Montag die Datei und an dem Montag beginnt die neue KW z.B.: KW40 dann steht in den umgewandelten Tabellen die KW40, es müsste aber KW39 stehen, d.h. von der abgeschlossene Kalenderwoche, wie eine Zusammenfassung der letzten Woche Irg.wie müsste man die Zelle minus die 1 subtrahieren...
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Claudia, das ginge im WorkbookOpen Ereignis über einen Umweg. Dazu brauche ich eine Hilfszelle, die ausgeblendet werden kann. Ich habe die Zelle AA1 in der Tabelle mit der KW genommen. In diese schreibst Du einmalig manuell die Kalenderwoche ein. Der Code prüft beim öffnen, ob die KW die in der Hilfszelle steht ungleich der in J8 ist. Wenn ungleich dann wird gespeichert( ich gehe davon aus, dass Dein Code zum Speichern funktioniert) Nach der Speicherung wird die KW in der Hilfszelle mit der Aktuellen überschrieben. Das wäre der Coe, welcher in das Codemodul DieseArbeitsmappe gehört: Code: Private Sub Workbook_Open() Dim str_Date As String, sh As Worksheet Const str_path As String = "X:\Groups\Allgemein\Shopfloor\Berichte\Wochenbericht\" '"C:\Temp\" Set sh = Sheets("Tabelle1") 'TABELLENNAMEN ANPASSEN (die Tabelle in der der in J8 die Kalenderwoche steht) If sh.Range("J8") > sh.Range("AA1") Then With Sheets("KW_Auswahl") str_Date = sh.Range("AA1") Sheets(Array("KW_Auswahl", "A", "B", "C")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ str_path & "Wochenbericht_" & str_Date & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False 'sh.Activate End With sh.Range("AA1") = Range("J8") End If End Sub
Du musst im Code den Tabellennamen anpassen, in der die KW steht. Siehe Kommentar im Code.
Gruß Atilla
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Atilla, ich würde hier lieber ungleich nehmen anstatt größer als, denn bei dem Jahreswechsel funktioniert deine Variante dann nicht. Code: If sh.Range("J8") <> sh.Range("AA1") Then
Gruß Stefan Win 10 / Office 2016
Registriert seit: 23.09.2014
Version(en): 2010
Danke dir erstmal für deine Bemühungen, jedoch steht weiterhin in den einzelnen Blätter, auf denen auch die KW's enthalten sind, weiterhin die neue KW und nicht die KW-1
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Claudia, dann so: Code: Private Sub Workbook_Open() Dim str_Date As String, sh As Worksheet Dim i As Long, arr arr = Array("Tabelle1", "a", "b", "c") Const str_path As String = "X:\Groups\Allgemein\Shopfloor\Berichte\Wochenbericht\" '"C:\Temp\" Set sh = Sheets("Tabelle1") 'TABELLENNAMEN ANPASSEN (die Tabelle in der der in J8 die Kalenderwoche steht) If sh.Range("J8") <> sh.Range("AA1") Then With Sheets("Tabelle1") str_Date = sh.Range("AA1") For i = 0 To UBound(arr) Sheets(arr(i)).Range("J8") = str_Date Next i Sheets(Array("Tabelle1", "a", "b", "c")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ str_path & "Wochenbericht_" & str_Date & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False sh.Activate End With sh.Range("AA1") = Range("J8") End If End Sub
@Steffan Du hast recht, danke für den Hinweis. Na siehste, schon bist Du wieder am korrigieren.
Gruß Atilla
|