Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Via VBA eine Zelle ändern
#1
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
to top
#2
Hi Claudia,

vielleicht so:
str_Date = Range("J8") - 1
Mit freundlichen Grüßen  Smile
Michael

Win 7 64 bit / Excel 2007/2016
to top
#3
Hallo Claudia,

befindet sich in Zelle J8 eine Formel?

Wird in Zelle C8 eine Eingabe manuell oder per Code gemacht?
Gruß Atilla

Excel 2007
to top
#4
@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()
to top
#5
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

Excel 2007
to top
#6
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...
to top
#7
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

Excel 2007
to top
#8
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 7 / Office 2007
to top
#9
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
to top
#10
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

Excel 2007
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
Question Anzahl der Hyperlinks auf eine Zelle zählen ipsips 4 87 19.11.2016, 10:06
Letzter Beitrag: RPP63
  Bestimmter teil aus Zelle in eine andere Kopieren markaay 3 54 17.11.2016, 11:13
Letzter Beitrag: BoskoBiati
Lightbulb VBA Zeile in eine Arbeitsmappe kopieren wenn in der Zeile eine 1 steht Olossos 8 110 11.11.2016, 17:08
Letzter Beitrag: Kuwer
  Registerfarbe ändern wenn Zelle Farbe hat michel34497 9 200 06.11.2016, 11:39
Letzter Beitrag: michel34497
  [VBA] wert eines felds ändern und eine funktion starten sobald timer abläuft Rjinxil 7 248 01.10.2016, 15:10
Letzter Beitrag: Steffl
  Zelle mit Auswahlmenü bedingt durch eine andere Eingabe stbelgien 5 260 21.09.2016, 14:05
Letzter Beitrag: Rabe
  Unterschiedliche Zahlenformatierung in eine Zelle übernehmen Matt87 7 172 19.09.2016, 08:14
Letzter Beitrag: Matt87
  Eine Datei schließen, eine andere Öffnen GustavoWoltmann 1 121 14.09.2016, 14:20
Letzter Beitrag: schauan
  Eine Zelle in mehreren Tabellen vergleichen michi89287 22 727 26.08.2016, 05:15
Letzter Beitrag: michi89287
  mehrere JPG's in eine Zelle bringen / keine Grafik ExcelAnfänger7775 5 277 11.08.2016, 07:58
Letzter Beitrag: ExcelAnfänger7775

Gehe zu:


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