Markierte Zellen von Word Tabelle Multiplizeren

  • Word

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Markierte Zellen von Word Tabelle Multiplizeren

    Hallo Zusammen ,


    bin Mittlerweile schon ein wenig am Verzweifelen mit meinem Problem. Ich habe in Word eine Tabelle. Diese enthällt mehere Zahlen, die ich mit mit einem Wert multiplizieren muss.
    Wäre dies nur ein Word Dokument, würde ich sie einfach ins Exel kopieren und dort berechen. Aber da ich über 1000 solcher Dokumente habe ist dies leider sehr umständlich.
    Deshalb meine Frage. Gibt es über VBA eine Möglichkeit die Markierten Zellen einer Tabelle mit einem Fixen Wert zu Multiplizieren und diesen dann in die selbe Zeile zurückzuschreiben? Ich habe leider keine Ahnung wie ich das Problem am besten angehen könnte.
    Habe schon mal mit diesem Code probiert aber leider funktioniert dieser nicht:


    Visual Basic-Quellcode

    1. Sub zellen_multi()
    2. ActiveDocument.Tables(1).Rows(3).Cells(2).Range.Text
    3. With ActiveDocument.Tabels(1)
    4. For i = 1 To .Rows(Count)
    5. .Rows(i).Cells(2).Range.Text = Str(Val(.Rows(i).Cells(2).Range.Text) * 1.15)
    6. Next i
    7. End With
    8. End Sub



    Danke schonmal im Vorraus.

    Grüße
    Willkommen im Forum.
    Der Code funktioniert schon - sobald man ihn syntaktisch richtig schreibt (ACHTUNG! Ich hab den Faktor verändert!):

    Visual Basic-Quellcode

    1. Sub zellen_multi()
    2. With ActiveDocument.Tables(1)
    3. For i = 1 To .Rows.Count
    4. .Rows(i).Cells(2).Range.Text = Str(Val(.Rows(i).Cells(2).Range.Text) * 3)
    5. Next i
    6. End With
    7. End Sub

    So wird bei mir aus Bild 1 eben Bild 2. Ggf. noch die Texte trimmen, sonst hast Du führende Leerzeichen in den Zellen.
    Bilder
    • Tab1BeforeMacro.png

      6,28 kB, 912×318, 16 mal angesehen
    • Tab1AfterMacro.png

      6,17 kB, 960×283, 16 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Argh. Wer lesen kann, hat in der Schule aufgepasst. Sorry.
    Hier also für markierte Zellen:

    Visual Basic-Quellcode

    1. Sub zellen_multi()
    2. With ActiveDocument.Tables(1)
    3. For Each CurrentCell In Selection.Cells
    4. If CurrentCell.ColumnIndex = 2 Then CurrentCell.Range.Text = Trim(Str(Val(CurrentCell.Range.Text) * 3))
    5. Next
    6. End With
    7. End Sub

    Allerdings geht das nur für zusammenhängende Bereiche. Laut mehrerer INetSeiten (1, 2, 3) unterstützt VBA nämlich keine non-contiguous Selections.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ja gar kein Problem Vapori,

    bedanke mich vielmals für deine Mühe. Funktioniert perfekt. Die CurrentCell habe ich leider nirgends gefunden ;(
    Habe es noch wie folgt umgebaut:


    Visual Basic-Quellcode

    1. Sub markierte_zellen()
    2. With ActiveDocument.Tables(1)
    3. For Each CurrentCell In Selection.Cells
    4. CurrentCell.Range = Replace(CurrentCell.Range, ",", ".")
    5. CurrentCell.Range.Text = Round(Val(CurrentCell.Range.Text) * 1.03, 2)
    6. Next
    7. End With
    8. End Sub


    So rechnet er auch noch die Kommastellen mit wenn man zum Beispiel mit 3% rechnet.

    Ja mir reicht das vollkommen auf einem Table aus.

    Danke!
    Schön, dass es jetzt läuft, wie es soll.

    DerNutze schrieb:

    Die CurrentCell habe ich leider nirgends gefunden
    CurrentCell ist doch ne Variable von mir. Ich hätte die auch RiRaRunkel nennen können. Der relevante Unterschied zu Deinem Code war doch nur, dass ich keine normale For-Next-Schleife nutze, sondern eine For-Each-Schleife. Oder hab ich Dich falsch verstanden? Du meintest schon, dass Du nicht auf "CurrentCell" als vermeintliches Schlüsselwort gekommen bist, richtig? (Was ja auch gar nicht möglich war, da es kein Schlüsselwort ist.)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.