Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Code ändert Formatierung

Betrifft: VBA Code ändert Formatierung von: Jonas
Geschrieben am: 02.05.2014 11:07:23

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

  

Betrifft: AW: VBA Code ändert Formatierung von: Tino
Geschrieben am: 03.05.2014 17:15:31

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


  

Betrifft: AW: VBA Code ändert Formatierung von: Jonas
Geschrieben am: 05.05.2014 16:54:13

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.


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Code ändert Formatierung"