Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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
Inhaltsverzeichnis

VBA Code ändert Formatierung

VBA Code ändert Formatierung
02.05.2014 11:07:23
Jonas
Hallo zusammen,
ich habe von meinem Vorgänger einen VBA-Code übernommen und verzweifle an diesem.
Folgende Situation:
Der unten stehende Code druckt eine Reihe verschiedener Dokumente in einer festgelegten Reihenfolge aus verschiedenen Arbeitsmappen. Auf diesen Dokumenten sind Grafiken mit Datentabelle. Jetzt wird es etwas kompliziert. In der Datentabelle sind Werte mit 2 Nachkommastellen aufgeführt (Bsp. 1,23). Bis hierhin läuft alles einwandfrei. Nun soll es aber Werte mit 4 Nachkommastellen geben (Bsp. 1,2345). Nun zerschießt der Code meine Formatierung auf die Werte 0.0000. Also aus dem Komma einen Punkt und löscht alle Werte.
Ich habe im Code die Zeilen fett markiert, wo er die Formatierung ändert. Ich hoffe, mir kann hier jemand helfen.
Besten Gruß
Jonas
Option Explicit
Public Sub DruckenInfo()
Dim Seitenzahl As String 'Seitenzahl zur Angabe in der Fußzeile
'Variablen zur Speicherung Dateinamen aus Steuerungstabelle. [Dateiname] = Name der  _
aktuelle zu bearbeitenden Datei,
'[DateinameAlt] = Dateiname der letzten bearbeiteten Datei
Dim Dateiname As String, DateinameAlt As String
Dim Blattname As String 'Name des zu druckenden tabellenblattes aus Exceltabelle mit Name =  _
[Dateiname]
Dim rng As Range 'Range-Objekt zum Durchlauf der Steuerungstabelle "Seitenzahlen"
Dim wbOpen As Workbook 'Variable für die jeweils für den Druck zu öffnende Excel-Mappe
Dim ws As Worksheet 'Variable für die zu druckende Tabelle in der Mappe [wbOpen]
'Range-Objekt für den Durchlauf der Tabelle "Seitenzahlen" inialisieren und auf Zelle "A2"  _
setzen. Dann auf
'das Tabellenblatt wechseln und diese Zelle auswählen
Set rng = ThisWorkbook.Worksheets("Seitenzahlen").Range("A2")
ThisWorkbook.Worksheets("Seitenzahlen").Activate
rng.Select
'Solange in einer Schleife die Tabelle durchlaufen, wie die Zellen in Spalte A nicht leer  _
sind
Do While rng  ""
Seitenzahl = rng.Offset(, 1) 'Seitenzahl für Druck mit einer Spalte Versatz von der  _
ausgeählten Zelle auslesen
Dateiname = rng.Offset(, 2) 'Dateiname hat 2 Spalten Versatz
Blattname = rng.Offset(, 3) 'Blattname hat 3 Spalten Versatz
'Abgleich der Variablen [DateinameAlt] und [Dateiname]. Ist [DateinameAlt] leer, dann  _
wird die Schleife zum
'ersten Mal durchlaufen und die Excelmappe [Dateiname] muss für den Druck geöffnet  _
werden. Bei späteren
'Schleifendurchlaufen ist [DateinameAlt] nicht mehr leer. Dann wird geprüft, ob sich  _
aktueller und letzter
'Dateiname unterscheiden und nur bei Bedarf die nächste Excelmappe geöffnet
If DateinameAlt = "" Then
Debug.Print Now, "Öffne Datei : " & Dateiname
'Set wbOpen = Workbooks.Open(Dateiname, False)
Workbooks.Open Dateiname, False, Local:=True
Set wbOpen = ActiveWorkbook
ElseIf DateinameAlt  Dateiname Then
Debug.Print Now, "Schließe Datei : " & wbOpen.Name
wbOpen.Close False
Debug.Print Now, "Öffne Datei : " & Dateiname
'Set wbOpen = Workbooks.Open(Dateiname, False)
Workbooks.Open Dateiname, False, Local:=True
Set wbOpen = ActiveWorkbook
End If
'In der geöffneten Arbeitsmappe für den Druck zum richtigen Tabellenblatt wechseln
Debug.Print Now, "Drucke Tabellenblatt : " & Blattname
Set ws = wbOpen.Sheets(Blattname)
ws.Select
'Wenn Seitenzahl (vgl. Steuerungstabelle "Seitenzahl") > 0 ist, dann die in den
'rechten Abschnitt der Fußzeile schreiben
 If Seitenzahl  "0" Then ws.PageSetup.RightFooter = "&" & Chr(34) & "Arial,  _
Standard" & Chr(34) & "&8&" & "Seite " & Seitenzahl
'Das ausgewählte Tabellenblatt drucken
ActiveSheet.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False,  _
ActivePrinter:="PDFCreator"
DateinameAlt = Dateiname 'Den Dateinamen für den Abgleich (s.o) zwischenspeichern
Set rng = rng.Offset(1) 'In der Steuerungstabelle zur nächsten Zeile
Loop
Set ws = Nothing
wbOpen.Close False: Set wbOpen = Nothing
Debug.Print "Beendet"
MsgBox "Beendet"
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code ändert Formatierung
03.05.2014 17:15:31
Tino
Hallo,
ich kann im Code nichts finden was auf eine Zellformatierung hinweist!
Muss ja was sein mit NumberFormat oder FormatConditions oder wo was in ein Range geschrieben wird?!
Gruß Tino

AW: VBA Code ändert Formatierung
05.05.2014 16:54:13
Jonas
Hallo Tino,
es weißt auch nichts darauf hin. Irgendwie springt er wohl kurz vor dem Druck auf die amerikanische Version. Sprich er macht aus einem Komma ein Punkt.
Wenn ich dir weitere Informationen geben kann, sag es mir.
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige