Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel änder Zellformat beim Öffnen mit VBA

Excel änder Zellformat beim Öffnen mit VBA
24.09.2007 14:55:00
Andreas
Hallo,
Dachte schon dass alles funktioniert und nun dass:
Es wird eine Auswertung aus SAP weiterverarbeitet die immer die gleiche Formatierung hat. In einer Spalte stehen die Rückgemeldeten Arbeitsstunden.
Wenn ich die .xls Datei direkt öffne:
Die Arbeitsstunden sind normal mit Komma getrennt (z.B. 43,952) und diese Zellen sind als Standard formatiert.
Wenn ich die .xls Datei über das Makro öffnen lasse:
Die Arbeitsstunden werden beim Öffnen in falsche Werte umgewandelt (z.B. 43.952) und diese Zellen sind als Zahl formatiert. Da geht meine Rechnung natürlich nicht mehr auf...
Wie lässt sich dieses eigenwillige verhalten von Exel abstellen?
Komisch ist dass es erst bei der nun vierten Anwendung des Makros nicht funktioniert.
Schon mal vielen Dank

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel änder Zellformat beim Öffnen mit VBA
24.09.2007 15:09:00
Renee
Hi Andreas,
Die Arbeitsstunden werden beim Öffnen in falsche Werte umgewandelt...
Ich habe noch nie erlebt, dass das Öffnen Wert umwandelt, also kann es wohl nur an dem Code liegen.
Sollt dieser weiterhin verborgen bleiben, kann Dir vermutlich niemand helfen...
GreetZ Renee

AW: Excel änder Zellformat beim Öffnen mit VBA
24.09.2007 16:39:00
Andreas
Ist aber wirklich so , dass ich komma werte habe wenn ich die datei Moser38 durch doppelclick öffne
Wenn ich das makro mit f8 durchtippe sehe ich eben dass die datei moser38 direkt mit den tausendertrennzeichen geöffnet wird.
Hier die Datei: https://www.herber.de/bbs/user/46295.xls
und hier der Code:

Sub KW_auswerten()
' KW_auswerten Makro
' Makro am 17.09.2007 von Andreas Werner erstellt
' Tastenkombination: Strg+a
With Range("B5:BA5").Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
If MsgBox("Ist die Zelle mit der KW die aktualisiert werden soll ausgewählt?", vbYesNo) =  _
vbNo Then GoTo ende
Range("B5:BA5").Interior.ColorIndex = xlNone
'Einlesen der Suchdaten
kw_such = ActiveCell.Value
name_such = Cells(3, 18).Value
jahr_such = Cells(3, 4).Value
team_such = Cells(3, 12).Value
'Relevante Dateien öffnen
Dim Pfad, File As String
Pfad_gef = "L:\Auswertungen\Gefährdete Endtermine FT" & team_such & "\" & jahr_such & "\"
File_gef = "gef" & team_such & "" & kw_such & ".xls"
Pfad = "L:\Auswertungen\Produktivität FT" & team_such & "\" & jahr_such & "\ _
Einzelproduktivität\" & name_such & "\"
File = "" & name_such & "" & kw_such & ".xls"
Workbooks.Open Filename:=Pfad_gef + File_gef
Workbooks.Open Filename:=Pfad + File
'Persönlliche Rückmeldezeit der KW nach erster Spalte sortieren und Variablen übergeben
With Workbooks(File).Sheets(name_such & kw_such)
.Activate
.Range("F:F,L:L,M:M,N:N,O:O").NumberFormat = "0.000"
.Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Cells.Find(What:="Rückmeldetezeit (M) gesamt:", After:=ActiveCell, LookIn _
:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
rückmeld_m_ges = ActiveCell.Offset(0, 5)
Cells.Find(What:="Rückmeldetezeit (P) gesamt:", After:=ActiveCell, LookIn _
:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
rückmeld_p_ges = ActiveCell.Offset(0, 5)
Cells.Find(What:="Anwesenheitszeit gesamt:", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
anwesenheit_ges = ActiveCell.Offset(0, 5)
End With
'Letzte Zeile der Fertigungsauftträge festlegen
Range("O1:O500").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:= _
xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
letzte_zeile = ActiveCell.Row
'Spalten tauschen
Columns("H:H").Select
Selection.Cut
Columns("C:C").Select
ActiveSheet.Paste
Columns("Q:Q").Select
Selection.Cut
Columns("D:D").Select
ActiveSheet.Paste
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Range("B1").Value = ("Auftrags-Nr")
Range("C1").Value = ("Bez")
Range("D1").Value = ("Vorgangsbeschreibung")
Range("E1").Value = ("Rest Au")
'Berechnung Rest Au
For i = 2 To letzte_zeile
Cells(i, 5).FormulaR1C1 = "=IF(RC[7]0,RC[7],RC[8]+RC[9])"
Next i
Range(Cells(2, 5), Cells(letzte_zeile, 5)).NumberFormat = "0.00"
'Vorhandenes Blatt "Gefiltert" löschen
'For i = 1 To Sheets.Count
'If Sheets(i).Name = "Gefiltert" Then Sheets(i).Delete: Exit For
'Next
'Zusatzblatt einfügen
Sheets.Add
With Sheets("Tabelle1")
.Select
.Move After:=Sheets(2)
.Name = "Gefiltert"
End With
'Filtern der Rückgemeldeten Zeiten nach "Auftragsnummer in der gefährdeten Liste vorhanden"
'Korrektur für Einsatz Spezialfilter
Workbooks(File_gef).Sheets("gef" & team_such & kw_such & "Mo").Activate
Range("A1").FormulaR1C1 = "Auftrags-Nr"
Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
Range("A1", Range("A65536").End(xlUp)).Copy
Workbooks(File).Sheets("Gefiltert").Activate
ActiveCell.PasteSpecial
Selection.End(xlDown).Select
'Spezialfilter
i = ActiveCell.Address
Sheets(name_such & kw_such).Columns("B:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:" & i), CopyToRange:=Range("C1"), Unique:=False
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").EntireColumn.AutoFit
Columns("F:F").EntireColumn.AutoFit
'Blatt bereinigen
Columns("A:B").Select
Selection.Delete Shift:=xlToLeft
'Summe bilden und Summe der rückgemeldeten Zeiten in Variable
Range("D1").End(xlDown).Select
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
letzte_zeile2 = ActiveCell.Row
Set Bereich = Range("b2", Cells(letzte_zeile2, 4))
End With
With ActiveCell.Offset(1, 0)
.Activate
.Value = Application.WorksheetFunction.Sum(Bereich)
'.FormulaR1C1 = "=SUM(R[-20]C:R[-1]C)"
'ActiveCell.FormulaR1C1 = "=SUM(R[-1]C)"
End With
rückmeld_gef_ges = ActiveCell.Value
'Ergebnis in Tabelle unter den entsprechenden KW eintragen
Workbooks("Auswertung_prod_term.xls").Sheets(name_such).Activate
ActiveCell.Offset(1, 0) = rückmeld_p_ges / anwesenheit_ges
ActiveCell.Offset(2, 0) = rückmeld_gef_ges / rückmeld_p_ges
ActiveCell.Offset(3, 0) = rückmeld_p_ges
ActiveCell.Offset(4, 0) = rückmeld_gef_ges
Range("A1").Select
Workbooks(File).Close False
Workbooks(File_gef).Close False
MsgBox ("Erfolgreich abgeschlossen!")
ende:
End Sub


Anzeige
AW: Excel änder Zellformat beim Öffnen mit VBA
24.09.2007 17:08:00
Renee
Hi Andreas,
Bist Du sicher, das die Systemeinstellungen (Länderspezifische Einstellungen) noch die gleichen sind?
Ist es nur bei einer bestimmten Datei oder bei mehreren ?
Was ergeben folgende Befehlszeilen im Direktfenster des VBE eingegeben ?

?application.International(xlDecimalseparator)
?application.International(xlThousandsSeparator)


GreetZ Renee

AW: Excel änder Zellformat beim Öffnen mit VBA
25.09.2007 08:32:14
Andreas
Hallo Renee,
habe die Direkteingabe endlich gefunden. Sie sagt:
?application.International(xlDecimalseparator)
,
?application.International(xlThousandsSeparator)
.
Es ist auch nur bei der einen Datei. Habe das Programm auf meinem Rechner und auch einem anderen getestet. Mit dem gleichen Ergebnis. Mit Moser36 und Moser37 funktioniert es, diese Woche mit Moser38 taucht das Problem auf.
Gibt es eine Möglichkeit die Spalten mit dem Makro ieder in das richtige Format zu bekommen? Hatte ja schon mit : '.Range("F:F,L:L,M:M,N:N,O:O").NumberFormat = "0.000" einen kläglichen Versuch gestartet.
Danke Renee das du dich darum kümmerst.
Gruß Andreas

Anzeige
AW: Excel änder Zellformat beim Öffnen mit VBA
25.09.2007 09:02:13
Renee
Hi Andreas,
Ich muss meine Erklärungsversuche mangels Wissens auch einstellen.
Vielleicht noch ein Versuch mit diesem Code(-Schnipsel):

Range("F:F,L:L,M:M,N:N,O:O").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False


GreetZ Renee

AW: Excel änder Zellformat beim Öffnen mit VBA
25.09.2007 15:11:13
Andrea
‘Ich vermisse dich immernoch so

AW: Excel änder Zellformat beim Öffnen mit VBA
27.09.2007 13:56:48
Andreas
Hallo Andrea,
*ich dich auch, mein Häschen.
Noch etwas anderes, dass vielleicht mit dem oben genannten Problem im Zusammenhang steht:
Wenn ich die Moser38 Mappe in Moser50 umbenenne, wird das einzige darin enthaltene Tabellenblatt auch in Moser50 umbenannt.
Bei den anderen mit SAP erzeugten Mappen (Moser36 und Moser37) war das nicht so.
Habe eben noch in VB-Editor die Eigenschaften der Dateien und Sheets verglichen aber kein Unterschied...
Irgendjemand eine Idee warum es das Zellformat einiger Zellen beim Öffnen üner VB ändert?
Gruß,
Andreas

Anzeige
AW: Excel änder Zellformat beim Öffnen mit VBA
28.09.2007 19:48:00
Gerd
Hallo Andreas,
mit diesen beiden Codezeilen legst Du explizit Zellen-Zahlenformate fest.
.Range("F:F,L:L,M:M,N:N,O:O").NumberFormat = "0.000"
Range(Cells(2, 5), Cells(letzte_zeile, 5)).NumberFormat = "0.00"
Kommentiere diese mal versuchsweise durch voranstellen eines Hochkommas aus.
Gruß Gerd

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige