Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Nach übertragen mit VBA falsche Formatierung??
#1
Hallo 
Ich habe ein Problem, vielleicht kann mir da jemand helfen.
Ich lasse per VBA verschiedene Daten in ein anderes Blatt übertragen. Alles lief gut am Anfang. Seid einiger Zeit bekomme ich jedoch in Zellen mit einem Betrag, (der als Währung formatiert ist, mit 2 Dezimalstellen und € Zeichen) ein falschen Ergebnis.
Als Beispiel:
In meiner Rechnung steht der Betrag 225,00€ dieser wird per klick übertragen. Leider habe ich dann das Resultat auf dem 2 Blatt von 2.250.027 (wenn als Währung formatiert) und zb 2250027 (Buchhaltung).

Kann das an einer Bedingten Formatierung liegen? 
Ich habe den VBA Code nie geändert oder so. Es funktionierte perfekt.

Hat jemand eine Idee was evt falsch läuft?

Vielen Dank im vorraus für eure Hilfe!
Antworten Top
#2
Hallo,

ohne deine Datei zu kennen, eher nicht.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Hallo,

schau Dir doch mal den Thread von Korain an, der auf der gleichen Seite steht. Dort geht es um die gleiche Thematik, - viellleicht hilft Dir das weiter?

https://www.clever-excel-forum.de/Thread...age--34224

Grüße

Norbert
Antworten Top
#4
Hallo,
Ich war diese Woche noch praktisch nicht im Büro deshalb konnte ich mich jetzt erst der Sache annehmen. 

Ich habe den Thread angsehen, und das versucht. Hilft nicht weiter. 
Ich habe jetzt auch ein neues Blatt erstellt, ich dachte das würde weiterhelfen. Aber nein. Es bleibt das gleiche. Die Datei so wie sie ist kann ich, resp darf ich nicht hochladen. Datenschutz eben.
Deshalb hab ich hier den Code mal komplett eingefügt. Vielleicht findet jemand von euch einen Fehler.



Code:
Sub Rechnungpdf()

Dim actZelle As Range
Set actZelle = ActiveCell

Dim DateiName As String

    DateiName = Range("R2") & Range("R1") & ".pdf"

    Range("A1:I46").ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
   
    Dim Rechnungsnr As String, Kundennr As String, Rechnungsdatum As String, Rechnungsbetrag As String, Name As String
Worksheets("Rechnung").Select
Rechnungsnr = Range("R1")
Kundennr = Range("B17")
Name = Range("G8")
Rechnungsdatum = Range("H17")
Rechnungsbetrag = Range("H38")
Worksheets("Zahlungsstatus").Select
If Worksheets("Zahlungsstatus").Range("A3").Offset(1, 0) <> "" Then
Worksheets("Zahlungsstatus").Range("A3").End(xlDown).Select

End If

Dim sRechnungsnr As Variant, sKundennr As Variant, sRechnungsdatum As Date, sRechnungsbetrag As Double, sName As String
Dim lngNextRow As Long
With Worksheets("Rechnung")
    Rechnungsnr = .Range("Q4")
    Kundennr = .Range("B17")
    sName = .Range("G8")
    Rechnungsdatum = .Range("H17")
    Rechnungsbetrag = .Range("H38")
End With
With Worksheets("Zahlungsstatus")
    lngNextRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(lngNextRow, 1).Value = Rechnungsnr
    .Cells(lngNextRow, 2).Value = Kundennr
    .Cells(lngNextRow, 3).Value = sName
    .Cells(lngNextRow, 4).Value = Rechnungsbetrag
    .Cells(lngNextRow, 5).Value = Rechnungsdatum

End With

   
    thisworkbook.Sheets("Rechnung").Range("E17") = thisworkbook.Sheets("Rechnung").Range("E17") + 1
Application.Goto actZelle
End Sub
Antworten Top
#5
Hallöchen,

wenn ich Werte aus Zellen auslese programmiere ich gerne
Range("A1").Value
und nicht nur
Range("A1")
Value ist zwar Standard, aber na ja ...

Wenn noch weitere Zahlen kommen, dann dürfte der Zellinhalt per Formel ermittelt und durch das Währungsformat gerundet sein.

Hast Du mal die Überprüfung genutzt? Was steht denn z.B. bei der Überprüfung von

Rechnungsbetrag

und

Range("H38").Value


Unabhängig davon übernimmst Du in Deinem Code die Daten 2x in die gleichen Variablen. Du hast für den zweiten Durchlauf aber neue Variablen definiert ... Was soll die Doppelung eigentlich bringen? Wobei mir der zweite Teil mit With deutlich sympathischer ist Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Hallo

Bei der überprüfung des Codes ist alles ok. Läuft einfach durch. 
auch mit Rechnungsbetrag = .Range("H38").Value
ändert sich aber nichts an der Ausgabe in der Liste.

Was mich einfach wundert ist das es die ersten ich glaub 10 oder 15 mal perfekt funktionierte.

Wir gesagt ich bin Neuling und befasse mich erst kurz damit. 

Wieso habe ich denn einen 2 Durchlauf mit andern Variablen? Es geht hier um Rechnungen, die ich automatisch als PDF speichern, das ganze in eine Liste (Zahlungsstatus)  eintragen lasse und dann noch die Rechnungsnummer um 1 Nummer erhöhe.
Antworten Top
#7
Hallöchen,

2x:

schaue in den Code was alles auf / mit Worksheets("Rechnung") passiert und wo Du in Deinem Code z.B. die Variable sRechnungsnr verwendest ..

Dim Rechnungsnr As String, Kundennr As String, Rechnungsdatum As String, Rechnungsbetrag As String, Name As String
Worksheets("Rechnung").Select
Rechnungsnr = Range("R1")
...

Dim sRechnungsnr As Variant, sKundennr As Variant, sRechnungsdatum As Date, sRechnungsbetrag As Double, sName As String
Dim lngNextRow As Long
With Worksheets("Rechnung")
Rechnungsnr = .Range("Q4")
...

teilweise mit gleichen, teilweise mit unterschiedlichen Zelladressen
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Smile 
Ich hab zwar jetzt etwas gebraucht da ich es nicht so einfach verstanden hatte.

Jetzt läuft es 
Vielen dank an alle die mir geholfen haben.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste