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, 12:51
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2014, 12: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, 14:00
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2014, 14: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
|