Hallo erst mal …
In einer Tabelle von rund 1600 Zeilen und 8 Spalten möchte ich Folgendes ausführen lassen:
Falls in einer Zeile in der Spalte 6 und in der Spalte 7 Werte eingesetzt sind, dann multipliziere diese und weise das Ergebnis in der Spalte 8 (dieser Zeile) aus.
Das sollte -möglichst in einem Rutsch- in der gesamten Tabelle durchgeführt werden.
Ich könnte mir vorstellen, daβ die Geschichte gar nicht so wahnsinnig schwer ist, für mich als VBA-Lagastheniker aber leider unlösbar. Vielleicht kann mir da ja jemand helfen. Herzlichen Dank vorab!
In einer Tabelle von rund 1600 Zeilen und 8 Spalten möchte ich
Folgendes ausführen lassen:
Falls in einer Zeile in der Spalte 6 und in der Spalte 7 Werte
eingesetzt sind, dann multipliziere diese und weise das
Ergebnis in der Spalte 8 (dieser Zeile) aus.
Hallo Hudot,
Alt+F11, oben im Editor Einfügen—Modul, nachfolgenden Code reinkopieren,
ggfs. w-w-w-Signatur „…mehr auf…“ liquideren.
Editor schließen. Alt+F8, Makro „Multiziplieren“ ausführen lassen.
An Kopie der Originaldoc austesten.
Gruß
Reinhard
Option Explicit
Sub Multiziplieren()
Dim Zei As Long
With ActiveDocument.Tables(1)
For Zei = 1 To .Rows.Count
If Pruef(Zei, 6) And Pruef(Zei, 7) Then
.Cell(Zei, 8).Range.Text = Val(.Cell(Zei, 6).Range.Text) \* Val(.Cell(Zei, 7).Range.Text)
End If
Next Zei
End With
End Sub
Function Pruef(Zei, Spa) As Boolean
With ActiveDocument.Tables(1)
If IsNumeric(Replace(.Cell(Zei, Spa).Range.Text, Chr(7), "")) Then
If Replace(.Cell(Zei, Spa).Range.Text, Chr(7), "") "" Then
Pruef = True
End If
End If
End With
End Function
ich hab’ ein Makro zusammengebastelt, das mit gewissen Einschränkungen funktioniert. Das ganze mit einer „Do … Loop“-Schleife, die Zeile für Zeile abarbeitet. Damit könnte ich gut leben, wenn ich -um andere, weitere Schritte anzufügen- die Schleife beenden könnte. Könnte mir vielleicht jemand zeigen, wie die Zeile „Loop Until“ … Tabellenende aussehen müβte? Ich wäre wirklich sehr dankbar!
ich hab’ ein Makro zusammengebastelt, das mit gewissen Einschränkungen funktioniert. Das ganze mit einer „Do … Loop“-Schleife, die Zeile für Zeile abarbeitet. Damit könnte ich gut leben, wenn ich -um andere, weitere Schritte anzufügen- die Schleife beenden könnte. Könnte mir vielleicht jemand zeigen, wie die Zeile „Loop Until“ … Tabellenende aussehen müβte? Ich wäre wirklich sehr dankbar! :
Hallo Hudot,
was genau funktioniert nicht bei Verwendung meines Codes?
Um eine Schleife abzubrechen gibt es viele Möglichkeiten.
Wie soll das hier laufen, ich schreibe nacheinader Codes für 20-50 Arten so eine Schleife abzubrechen und du suchst du dir dann eine aus die bei dir funktioniert?
Naja, das kannste knicken. Zeige deinen Code, das tunt das ganze zeitlich.
Nachdem du auf meinen Erstbeitrag geantwortet hast.
erst mal (wieder) herzlichen Dank für Deine Mühe, ich hoffe, ich kann Dir auch 'mal etwas Gutes tun! Ich bin so, wie ich Deine Anweisung verstanden habe, vorgegangen, hab also den Code in ein Modul kopiert … dabei bilden sich 2 Abschnitte, der erste endet mit „End Sub“, dann beginnt ein zweiter, der mit Function beginnt. Wenn ich das Makro starte, kommt die Fehlermeldung „Fehlermeldung beim Kompilieren - Innerhalb einer Prozedur ungültig“ bezogen auf „Option Explicit“. Hab ich da irgend etwas falsch gemacht?
ich hoffe, :ich kann Dir auch 'mal etwas Gutes tun!
echt?, Mein Wunschzettel für Weihnachten ist lang
Ich bin so, wie ich
Deine Anweisung verstanden habe, vorgegangen, hab also den
Code in ein Modul kopiert … dabei bilden sich 2
Abschnitte, der erste endet mit „End Sub“, dann beginnt ein
zweiter, der mit Function beginnt.
Ja, so soll es sein. Ganz oben das Option Explicit.
Dann die Sub-Prozedur
Sub abc()
…
End sub
Dadrunter die Functions-Prozedur
Function xyz()
…
End function
Wenn ich das Makro starte,
kommt die Fehlermeldung „Fehlermeldung beim Kompilieren -
Innerhalb einer Prozedur ungültig“ bezogen auf „Option
Explicit“. Hab ich da irgend etwas falsch gemacht?
Ja, es stand nicht ganz oben oder du hast da im Modul noch andere Prozeduren und durchs Reinkopieren Option Explicit doppelt o.ä.
Ich hatte den Code getestet mit Word 2000, funktionierte,…
ich bitte um Entschuldigung, ich hatte -als ich „mein“ Makro, das mit der Schleife, gebastelt hatte… , und dann meine Frage hierzu bei w-w-w eingestellt habe-, nicht gesehen, daβ Du bereits geantwortet und mir ein gut funktionierendes Makro angeboten hast.
Hoffentlich liegt es am Schlafmangel, aber ich hab’ nicht nur Deinen Code zunächst unvollständig kopiert, danach hab ich das Makro auch noch an einer Tabelle ausprobiert, die nur 7 Spalten hatte … das konnte nicht funktionieren.
Also sei mir bitte nicht böse, ich bin Fan Deiner Arbeit und des Codes, den Du mir erstellt hast. Gaaaaaaaaaaaaaaaaanz herzlichen Dank!