Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
548to552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
548to552
548to552
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nur aktualisierte Arbeitsblätter drucken

nur aktualisierte Arbeitsblätter drucken
15.01.2005 11:31:51
Thomas
Hallo,
ich versuche mich schon seit ein paar Tagen an einer Lösung eines Problems, resigniere mittlerweile. Vielleicht könnt Ihr mir ja helfen.
Ich verweise von einem Arbeitsblatt (Blatt 1) auf 4 weitere Arbeitsblätter (Blatt 2,3,4,5). Wenn ich in Blatt 1 eine Eingabe für Blatt 3 und 4 mache (Inhalte werden an diese übergeben) dann würde ich vor dem Speichern gerne nur die aktualisierten Arbeitsblätter ausdrucken. Die nicht veränderten Arbeitsblätter (in diesem Beispiel Blatt 2 und 5) sollen nicht ausgedruckt werden. Schön wäre es, wenn ich den Ausdruck via Button starten kann.
Vielen Dank für die Hilfe!
Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur aktualisierte Arbeitsblätter drucken
15.01.2005 12:04:38
Roland
Hallo Thomas,
ohne Beispielstabelle wird es da schwierig. Was hältst du von folgendem Ansatz:
In Tabelle1 werden die Zahlen immer in A1 - A20 eingetragen, wenn sich dort was ändert, soll Tabelle1 ausgedruckt werden:
Option Explicit
Public iAlt As Integer
Public iNeu As Integer

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
iNeu = WorksheetFunction.Sum(Sheets(1).Range("A1:A10"))
If iNeu - iAlt <> 0 Then Sheets(1).PrintOut
End Sub


Private Sub Workbook_Open()
iAlt = WorksheetFunction.Sum(Sheets(1).Range("A1:A10"))
End Sub

Feedback wäre nett.
Gruß Roland
Anzeige
AW: nur aktualisierte Arbeitsblätter drucken
15.01.2005 12:23:43
Thomas
Hallo Roland,
vielen Dank schonmal für den Lösungsversuch!! Natürlich gibt es ein Feedback :)
Das trifft die Sache eigentlich schon gut, nur möchte ich nicht, daß nur Tabelle 1 ausgedruckt wird, wenn dort etwas geändert wurde, sondern auch die verbundenen anderen Tabellen. Z.B. gebe ich in Tabelle 1 mehrere Werte ein:
Wert für Tabelle 2: 110
Wert für Tabelle 3: 123
Wert für Tabelle 4:
Diese Werte werden in Tabelle 2 und 3 ebenfalls akualisiert. Tabelle 4 wird nicht aktualisiert, da keine Änderung vorgenommen wurde. Nun möchte ich, daß sowohl Tabelle 1, als auch Tabelle 2 und 3 ausgedruckt werden, weil sich dort die Werte geändert haben. Ich würde das ganz gerne per Button steuern, d.h. daß ich per Button die Ausdrucke erstelle und die Datei anschließend gespeichert wird...
Sorry, daß ich im Moment keine Beispieldatei zur Verfügung stellen kann.
Vielen Dank für Deine Hilfe! Ich habe wieder Hoffnung, daß mein Problem doch gelöst werden kann :)
Thomas
Anzeige
AW: nur aktualisierte Arbeitsblätter drucken
15.01.2005 13:05:53
Roland
Hallo Thomas,
wo ist das Problem? Dann gibts im Workbook-Open eben für jedes Blatt eine öffentliche Variable, die eingelesen wird, also
iAlt1 = WorksheetFunction.Sum(Sheets(1).Range("A1:A10")) für Blatt 1
iAlt2 = WorksheetFunction.Sum(Sheets(2).Range("A1:A10")) für Blatt 2
iAltn = WorksheetFunction.Sum(Sheets(n).Range("A1:A10")) für Blatt n
und dann mach dir eben einen CommandButton und verfahre mit den neuen Werten analog, also
iNeu1 = WorksheetFunction.Sum(Sheets(1).Range("A1:A10")) für Blatt 1
iNeu2 = WorksheetFunction.Sum(Sheets(2).Range("A1:A10")) für Blatt 2
iNeun = WorksheetFunction.Sum(Sheets(n).Range("A1:A10")) für Blatt n
und dann
If iNeu1 - iAlt1 0 Then Sheets(1).PrintOut
If iNeu2 - iAlt2 0 Then Sheets(2).PrintOut
If iNeun - iAltn 0 Then Sheets(n).PrintOut
Schönes Wochenende
Roland
Anzeige
AW: nur aktualisierte Arbeitsblätter drucken
15.01.2005 13:54:59
Thomas
Hallo Roland,
das Problem ist, daß ich mich in die Grundlagen erst langsam einarbeite und deswegen solche Änderungen für mich noch nicht möglich sind. Den Code lesen kann ich, schreiben/ ändern bedarf noch Zeit.. leider. Deswegen habe ich mich ja an Euch gewendet.
Ich werde mal versuchen, aus Deiner Beschreibung was zu basteln. Allerdings erhalte ich noch ein Debug-Fehler, weil einige Variablen nicht definiert sind. Muss ich im oberen Bereich jede Variable definieren oder kann ich das globaler umsetzen?
Vielen Dank!
Ein schönes Wochenende.
Thomas
AW: nur aktualisierte Arbeitsblätter drucken
15.01.2005 15:21:50
Roland
Hallo Thomas,
für 5 Blätter könnte das so aussehen:
Option Explicit
Public iAlt1 As Integer
Public iAlt2 As Integer
Public iAlt3 As Integer
Public iAlt4 As Integer
Public iAlt5 As Integer
Public iNeu1 As Integer
Public iNeu2 As Integer
Public iNeu3 As Integer
Public iNeu4 As Integer
Public iNeu5 As Integer

Private Sub Workbook_Open()
iAlt1 = WorksheetFunction.Sum(Sheets(1).Range("A1:A10"))
iAlt2 = WorksheetFunction.Sum(Sheets(2).Range("A1:A10"))
iAlt3 = WorksheetFunction.Sum(Sheets(3).Range("A1:A10"))
iAlt4 = WorksheetFunction.Sum(Sheets(4).Range("A1:A10"))
iAlt5 = WorksheetFunction.Sum(Sheets(5).Range("A1:A10"))
End Sub

und in das Tabellenblatt mit dem Commandbutton:

Private Sub CommandButton1_Click()
iNeu1 = WorksheetFunction.Sum(Sheets(1).Range("A1:A10"))
iNeu2 = WorksheetFunction.Sum(Sheets(2).Range("A1:A10"))
iNeu3 = WorksheetFunction.Sum(Sheets(3).Range("A1:A10"))
iNeu4 = WorksheetFunction.Sum(Sheets(4).Range("A1:A10"))
iNeu5 = WorksheetFunction.Sum(Sheets(5).Range("A1:A10"))
If iNeu1 - iAlt1 <> 0 Then Sheets(1).PrintOut
If iNeu2 - iAlt2 <> 0 Then Sheets(2).PrintOut
If iNeu3 - iAlt3 <> 0 Then Sheets(3).PrintOut
If iNeu4 - iAlt4 <> 0 Then Sheets(4).PrintOut
If iNeu5 - iAlt5 <> 0 Then Sheets(5).PrintOut
End Sub

Gruß Roland
Anzeige
AW: nur aktualisierte Arbeitsblätter drucken
15.01.2005 12:13:42
Matthias
Hallo Thomas,
als Ansatz:
schreibe ins Tabellenblattmodul der Blätter 2-5 jeweils
Private Sub Worksheet_Calculate()
Range("B1").Value = Now()
End Sub
Damit wird das letzte Änderungsdatum jeweils in die Zelle B1 geschrieben.
und ins Arbeitsblattmodul diesen Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For i = 2 To 5
If Sheets(i).Range("B1") > Sheets(1).Range("B1") Then
MsgBox "Blatt " & i & " wird gedruckt!"
Sheets(i).PrintOut
End If
Next i
Sheets(1).Range("B1").Value = Now()
End Sub
hier werden die Daten der letzten Speicherung (in Blatt 1) mit den Daten der letzen Änderung verglichen und, wenn neuer, die Blätter 2-5 ausgedruckt.
Gruß Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige