Microsoft Excel

Herbers Excel/VBA-Archiv

Zugriff auf Zelle, deren Wert sich ändert


Betrifft: Zugriff auf Zelle, deren Wert sich ändert von: Lare
Geschrieben am: 23.01.2019 15:42:26

Guten Tag Zusammen,

ich hoffe, ihr könnt mir weiterhelfen, denn ich sitze schon seit Tagen dran und bin kein Stück weitergekommen...

Ich habe hier zwei Arbeitsblätter, die Report und Einstellungen heißen. In Report gibt's eine bestimmte Zelle namens "Jahr" (z.B. 2015), die das Jahr vom Report darstellt. "Jahr" kann ein beliebiges Jahr sein und der Inhalt des Reports wird dementsprechend aktualisiert. Die Daten werden hier von einer Datenbank gezogen. In Einstellungen gibt es eine Tabelle "Liste", in der die Jahre eingegeben werden können, von denen man den Report ausdrucken möchte (z.B. 2015. 2016,...). Mit dem Code unten soll PDF-Reports von dem jeweiligen Jahr in "Liste" ausgedruckt werden.

Soweit funktioniert der Code fast. Leider nur fast, da die Schleife irgendwie ihre doppelte Arbeit macht. Am Ende bekommt man zwar drei Reports vom 2015, 2016 und 2017 ausgedruckt, was aber länger dauert, als es sein soll, denn bei zwei Einträgen (z.B. 2015, 2016) wiederholt sich die Schleife zweimal (=4 mal PDF drucken), bei drei Einträgen (2015, 2016 und 2017) dreimal (9 mal PDF drucken), usw.

Kann mir jemand sagen, woran es liegen könnte? :-(

Sub Drucken()
Dim Liste As Range
    Dim Speicherpfad As String
    
    Speicherpfad = Sheets("Pfad").Range("A1").Value
    
    Call ScreenUpdating_OFF
     
    For Each Liste In Range("C4:C104")
        If Liste.Value <> "" Then
           Range("Jahr").Select: ActiveCell.Value = Liste.Value
           Application.Run "CalcvonDB"
           ActiveSheet.PrintOut PrintToFile:=True, PrToFileName:=Speicherpfad & "\" &  _
Dateiname_ohne_Endung & " " & Liste.Value & ".pdf"
        End If
    Next Liste
    
    Call ScreenUpdating_ON

End Sub

  

Betrifft: AW: Zugriff auf Zelle, deren Wert sich ändert von: Daniel M.
Geschrieben am: 23.01.2019 15:56:19

Hallo Lare,

bin mir nicht sicher ob es hilft, versuch mal .Cells hinter Range("C4:C104") zu setzen. Habe den Verdacht, dass er jedes Mal die ganze Range untersucht und nicht nur jede Zelle einzeln durchgeht und deshalb dann entsprechend alles pro Eintrag wiederholt. Kann aber auch völliger Blödsinn sein...

Grüße
Daniel


  

Betrifft: AW: Zugriff auf Zelle, deren Wert sich ändert von: Lare
Geschrieben am: 23.01.2019 16:13:38

Hi Daniel,

danke für deine Nachricht! :-)

Leider hat sich dadurch nichts geändert. Meine Vermutung wäre so: Die Zelle "Jahr" enthält durch bspw. Eingabe von 2015,2016,2017 in die Tabelle "Liste" insgesamt drei Werte, auch wenn die nach und nach ausgegeben wird. Ich habe versucht, diese Werte vom Jahr quasi einzeln auszugeben und zu speichern, bevor die PDF-Datei gedruckt wird. Ich habe aber noch keine Idee, wie ich das Ganze in dem Code umsetzen soll.

Ich hoffe, es ist verständlich genug!


LG
Lare


  

Betrifft: AW: Zugriff auf Zelle, deren Wert sich ändert von: Daniel M.
Geschrieben am: 23.01.2019 16:22:33

Die Beispieldatei würde da sehr helfen, ansonsten wird es schwierig für andere sich da rein zu denken.


  

Betrifft: AW: Zugriff auf Zelle, deren Wert sich ändert von: Lare
Geschrieben am: 23.01.2019 16:44:27

Hallo Daniel,

aber klar! Ich habe die Datei nun sehr vereinfacht.

https://www.herber.de/bbs/user/127034.xlsx

LG
Lare


  

Betrifft: AW: Zugriff auf Zelle, deren Wert sich ändert von: Daniel M.
Geschrieben am: 24.01.2019 09:22:39

So, ich weiß natürlich nicht, was "CalcvonDB" genau macht. Mir ist aber aufgefallen, dass dein Code ungenaue Ranges enthält. Die Liste zum Beispiel kann er nur durchgehen, wenn du dich im richtigen Blatt "Einstellungen" befindest. Die definierte Range "Report" verweist bei deiner Version auch auf das Blatt "Einstellungen" B4, was so eigentlich keinen Sinn macht. Wenn ich richtig liege, sollte das eigentlich auf das Blatt "Report" B4 verweisen?

Ich konnte es jetzt nur rudimentär testen, aber versuch mal Range("C4:C104") in Sheets("Einstellungen").Range("C4:C104") zu ändern und Range("Jahr") in Sheets("Report").Range("B4"). Wenn ich jetzt einfach die Werte aus B4 in der Schleife auslese, bekomme ich genau drei Ergebnisse 2015 2016 2017, so wie es sein sollte. Kann also keine Verdreifachung der Ergebnisse beobachten.

Probier mal ob diese kleinen Änderungen schon helfen.

Grüße
Daniel


  

Betrifft: AW: Zugriff auf Zelle, deren Wert sich ändert von: Lare
Geschrieben am: 28.01.2019 09:36:46

Lieber Daniel,

es tut mir leid für die späte Rückmeldung, ich war seit Mittwoch nicht mehr im Office und hatte keinen Zugriff auf die Datei.

Mit "CalcvonDB" wollte ich auf die Datenbank zugreifen und die neuen Werte direkt berechnen aber nun habe ich auch ohne "CalcvonDB" + deine Änderungen getestet und es funktioniert einwandfrei! Du bist ein Held :-)

Danke dir nochmal und viele Grüße
Lare


Beiträge aus dem Excel-Forum zum Thema "Zugriff auf Zelle, deren Wert sich ändert"