Via vba eine zelle ändern

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:

_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…

Khai

Hallo,

den Wert einer Zelle verringert man z. B. so:

Worksheets(„tabelle1“).Range(„A1“).Value = Worksheets(„tabelle1“).Range(„A1“).Value - 1

Aber, wenn du das anpasst und in deinen Code integrierst, bekommst du eine Endlosschleife, weil sas automatische Ändern der Zelle löst „Workhseet_Change“-Ereignis auslöst.

Ich schlage vor, du lagest den Code in ein Modul aus, passt dort die Wertverringerung um eins an und startest den Code dann über einen Button.

Grüße

powerblue

Hallo,

Hallo Khai,

komme leider bei meinem Problem einfach nicht mehr weiter.

Schaun wir mal.

Ich möchte das durch mein VBA-Code eine bestimmte Zelle, hier
die Zelle(„J8“) mit 1 subtrahiert wird.
Mein Code:

Private Sub Worksheet\_Change(ByVal Target As Range)

 If DieseArbeitsmappe.altWert Range("J8") Then

Wo kommt altWert her? Ist das eine globale Variable, deren Dim du hier unterschlagen hast?

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")

Wozu das „With Sheets…“? Das wird nirgens verwendet!

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.

Ja, das könnte wichtig sein: Steht in C8 das aktuelle Datum?
Wenn ja, ändere die Zeile

str\_Date = Range("J8")

in

str\_Date = WorksheetFunction.WeekNum(Range("C8")-7)

Ich hoffe ihr könnt mir hierbei weiterhelfen…

Konnte ich helfen?

Khai

Andreas