DGV Export in Excel und in Spalte Summe errechnen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von schnibli.

    DGV Export in Excel und in Spalte Summe errechnen

    Hallo Zusammen

    Ich würde gerne mein DGV (Bindingsource) in eine Excel Datei Exportieren.
    Dies Funktioniert auch ganz gut.

    Nun nach dem Export würde ich gerne noch in der Spalte H eine Summe einblenden.
    Ich habe das wie folgt probiert:

    VB.NET-Quellcode

    1. For Each cell In xlWS.Range("H1:H" & rows)
    2. With xlWS
    3. .Range("H" & cell).Value = ("=E" & cell & "/G" & cell & "*F" & cell & "")
    4. End With
    5. Next

    Sobald ich dies Ausführe erscheint folgender Fehler:

    Quellcode

    1. ​System.InvalidCastException: "Der Operator & ist für Zeichenfolge H und Typ Range nicht definiert."


    Kann mir jemand helfen?
    Folge der Fehlermeldung. Was glaubst Du, was cell ist? Das ist kein Text.
    Willst Du das eigentlich als berechnete Spalte haben oder nur ein Ergebnis in der Zielspalte? Denn sonst rechne es doch in VB aus und schreib das Ergebnis in Excel rein.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed

    Vielen dank für deine Antwort.
    Ja das hab ich mir schon gedacht das Cell der falsche "wert" beinhaltet.
    Nur wie formatiere ich dies richtig...

    Ich benötige die Berechnung in der Spalte.

    Gruss schnibli


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „schnibli“ ()

    Da brauchst du keine Schleife.
    Das geht mit einem Einzeiler.
    xlWS.Range("H1:H" & rows).FormulaR1C1 = "=RC[-3]/RC[-1]*RC[-2]"

    Allerdings würde ich noch eine Fehlerbehandlung für Division durch Null einbauen.
    Und eine Begrenzung auf den notwendigen Range.
    Und rows als Variablennamen würde ich auch nicht nehmen, um Verwechslung mit der Object Collection xlWS.Rows zu vermeiden.

    VB.NET-Quellcode

    1. Dim r = xlWS.UsedRange.Rows.Count
    2. xlWS.Range("H1:H" & r.ToString).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-1]*RC[-2],0)"
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()