Hallo Hudot,
zunaechst einmal: VIELEN DANK fuer Deine Antwort!! Ich bin
wirklich baff, wie sehr Du Dich in WWW engagierst. Respekt!
dankeschön Hudot.
Im Prinzip hast Du wirklich Alles verstanden …
Naja, nobh bin ich da skeptisch aber zugegeben, deinen neuen Beitrag
habe ich eben erst gelesen und die Details die du beschreibst schaue
ich mir morgen äh heute an, jetzt nicht mehr.
Wenn ich das also richtig sehe, muesste der folgende Code
(weitere) 11-mal durchlaufen werden:
? also 12 mal? Aber egal, kannste ja im Code abändern wie oft.
Und Loop oder While müßte auch funktionieren.
diese Schleife x-mal durchlaufen", weiss aber nicht wie. Ich
hab’s mit „…Loop…“ probiert, leider ohne Erfolg.
Ich habe es anders gelöst aber es geht wohl mit allen drei „Wegen“.
For Next ginge auch.
Nachstehend die Codes von mir, stammen vom 29-ten nach vielen Tests, bin gar nicht so sicher daß der gezeigte Code perfekt läuft aber das
Prinzip stimmt.
Das Prinzip ist eine globale Variable zu setzen (N) die die Anzahl der
Aufrufe von „ZZ“ mitzählt. Und gleich zu Beginn von ZZ diese Variable
abzuprüfen.
Option Explicit
Public N As Integer
Sub ZZ()
If N = 11 Then Exit Sub
N = N + 1
…
dein Code
…
Call ZZ
End Sub
Um meine Codes zu testen mache bitte folgendes. Nimm ein leeres
Dokument. Füge so 2-4 Leerzeilen ein, dann aus den Lecasy-Tools
einen ActiveX CommandButton.
Dann kopiere in das Modul „ThisDocument“ folgenden Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Call ErzeugeFuelleTabelle
Call ZZ
Application.ScreenUpdating = True
End Sub
In ein Standardmodul fügste nachstehenden Code ein.
Dann klicke im Dokument auf den Button…
Danach siehst du was dein Code macht wenn er mehrfach aufgerufen wird.
Die Fehlermeldung in A5,
„!Tabellenindex darf nicht Null sein“ kommt wohl daher daß die
Formel Sum(Left) in A5 links davon keine Zellen hat um eine Summe zu
bilden, meine Mutmaßung ohne Ahnung von Word.
Warum da einige Zellen ein Minuszeichen vor den Zahlwerten haben ist
mir ähnlich unklar.
Gruß
Reinhard
Option Explicit
Public N As Integer
Sub ZZ()
If N = 11 Then Exit Sub
Selection.Copy
Selection.MoveRight Unit:=wdCell, Count:=5
Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:= \_
wdFloatOverText, DisplayAsIcon:=False
Selection.MoveRight Unit:=wdCell
Selection.InsertFormula Formula:="=SUM(LEFT)\*0,07/12", NumberFormat:= \_
"#.##0,00"
Selection.MoveRight Unit:=wdCell
Selection.InsertFormula Formula:="=SUM(LEFT)", NumberFormat:="#.##0,00"
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
N = N + 1
Call ZZ
End Sub
Sub ErzeugeFuelleTabelle()
Dim T As Table, myRange, Zei As Long, Spa As Long, L As Integer
With ActiveDocument
For Each T In .Tables
T.Delete
Next T
Set myRange = .Range(Start:=0, End:=0)
.Tables.Add Range:=myRange, NumRows:=16, NumColumns:= \_
12, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= \_
wdAutoFitFixed
With .Tables(1)
If .Style "Tabellengitternetz" Then
.Style = "Tabellengitternetz"
End If
.ApplyStyleFirstColumn = True
.ApplyStyleRowBands = True
End With
With .Tables(1)
For Zei = 1 To .Rows.Count
For Spa = 1 To .Columns.Count
.Cell(Zei, Spa).Range.Text = Spa
.Cell(Zei, Spa).Range.Text = Left(.Cell(Zei, Spa).Range.Text, 1)
Next Spa
Next Zei
L = Len(.Cell(1, 1).Range.Text)
Selection.MoveRight Unit:=wdCharacter, Count:=L - 2, Extend:=wdExtend
End With
End With
End Sub
Selection.MoveLeft Unit:=wdCharacter, Count:=1,
Extend:=wdExtend
Selection.Copy
Selection.MoveRight Unit:=wdCell, Count:=5
Selection.PasteSpecial Link:=False, DataType:=wdPasteText,
Placement:= _
wdFloatOverText, DisplayAsIcon:=False
Selection.MoveRight Unit:=wdCell
Selection.InsertFormula Formula:="=SUM(LEFT)*0,07/12",
NumberFormat:= _
„#.##0,00“
Selection.MoveRight Unit:=wdCell
Selection.InsertFormula Formula:="=SUM(LEFT)",
NumberFormat:="#.##0,00"
Danke fuer Deine Muehe und liebe Gruesse!
hudot