Thema Datum  Von Nutzer Rating
Antwort
08.02.2025 10:27:32 Jens
NotSolved
08.02.2025 12:09:05 ralf_b
NotSolved
08.02.2025 13:14:14 Gast44414
NotSolved
08.02.2025 14:04:11 Jens
NotSolved
Rot Aufteilen ohne Rest [ Lösung ]
08.02.2025 15:09:10 Jens
Solved
08.02.2025 22:31:00 Gast35362
NotSolved
09.02.2025 00:50:53 Jens
NotSolved

Ansicht des Beitrags:
Von:
Jens
Datum:
08.02.2025 15:09:10
Views:
57
Rating: Antwort:
 Nein
Thema:
Aufteilen ohne Rest [ Lösung ]

Hallo zusammen,

ich habe DIE LÖSUNG für mein Problem gefunden !
Zumindest solang bis sich ggf. eine noch unbekannte Datenlage einstellt.

Nachfolgend ein Auszug des VBA-Codes, der meine Probleme mit den von mir getesteten Daten-Konstellationen 100%ig löst.


Sub ExportRangeToPDF()
    Dim ws As Worksheet
    Dim rng As Range
    Dim fileName As String
    Dim folderPath As String
    Dim pdfFileName As String
    Dim firstCell As Range
    Dim pos As Long
    Dim revision As String
    Dim cell As Range
    Dim countCellsWith20Chars As Long
    Dim columnOCount As Long
    Dim columnPCount As Long
    Dim newRng As Range
    Dim hwnd As Long
    Dim hwndChild As Long
    Dim windowText As String
    Dim windowTextLength As Long
    Dim explorerFound As Boolean
    Dim summeTeilsummen As Double
    Dim differenz As Double
    Dim lastCell As Range
    Dim originalFormel As String
    Dim tempSum As Double
    Dim originalFormulas As Collection
    Dim totalValue As Double


    ' Sammlung für die ursprünglichen Formeln erstellen
    Set originalFormulas = New Collection


    ' Kaufmännisch runden und die Werte in die Zellen schreiben
    For Each cell In rng.Columns(2).Cells
        If cell.HasFormula Then
            ' Ursprüngliche Formel speichern
            originalFormulas.Add cell.Formula, CStr(cell.Address)
            ' Kaufmännisch gerundeten Wert in die Zelle schreiben
            cell.Value = WorksheetFunction.Round(cell.Value, 2)
        ElseIf IsNumeric(cell.Value) Then
            ' Kaufmännisch gerundeten Wert in die Zelle schreiben
            cell.Value = WorksheetFunction.Round(cell.Value, 2)
        End If
    Next cell
    
    ' Summe der Teilsummen berechnen
    tempSum = 0
    For Each cell In rng.Columns(2).Resize(rng.Rows.Count - 1, 1).Offset(1, 0).Cells
        tempSum = tempSum + WorksheetFunction.Round(cell.Value, 2)
    Next cell
    summeTeilsummen = tempSum

    ' Gesamtwert berechnen
    Set firstCell = rng.Cells(1, 2)
    totalValue = WorksheetFunction.Round(firstCell.Value, 2)

    ' Differenz berechnen
    differenz = totalValue - summeTeilsummen

    ' Nur wenn die Differenz signifikant ist, wird die letzte Zelle angepasst
    If Abs(differenz) > 0.0001 Then ' Toleranzwert für minimale Differenzen
        ' Letzte Zelle in der rechten Spalte des markierten Bereichs festlegen
        Set lastCell = rng.Cells(rng.Rows.Count, 2)
        
        ' Ursprüngliche Formel der letzten Zelle speichern
        If lastCell.HasFormula Then
            originalFormulaLastCell = lastCell.Formula
        End If
        
        ' Differenz auf den letzten Teilbetrag addieren
        lastCell.Value = WorksheetFunction.Round(lastCell.Value + differenz, 2)
    End If


.
.
hier der VBA-Code zum Drucken des markierten Bereiches
.
.

 

    ' Ursprüngliche Formeln wieder einfügen
    For Each cell In rng.Columns(2).Cells
        On Error Resume Next
        If Not IsEmpty(originalFormulas.Item(CStr(cell.Address))) Then
            cell.Formula = originalFormulas.Item(CStr(cell.Address))
        End If
        On Error GoTo 0
    Next cell

    ' Ursprüngliche Formel der letzten Zelle wieder einfügen
    If originalFormulaLastCell <> "" Then
        lastCell.Formula = originalFormulaLastCell
    End If

.
.
End Sub


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.02.2025 10:27:32 Jens
NotSolved
08.02.2025 12:09:05 ralf_b
NotSolved
08.02.2025 13:14:14 Gast44414
NotSolved
08.02.2025 14:04:11 Jens
NotSolved
Rot Aufteilen ohne Rest [ Lösung ]
08.02.2025 15:09:10 Jens
Solved
08.02.2025 22:31:00 Gast35362
NotSolved
09.02.2025 00:50:53 Jens
NotSolved