Verkeerde volgorde bij maken meerdere tabellen

Status
Niet open voor verdere reacties.

airways6

Nieuwe gebruiker
Lid geworden
27 nov 2011
Berichten
3
Hallo,

Ik vrij nieuw in VBA en zit met een probleem. Ik heb het voor elkaar gekregen om aan de hand van een x aantal items in een "listbox" per item in de lijst een tabel te genereren in word op een bookmark "bmtabel" met 2 regels en in de eerste regel de tekst van het item. Het probleem is dat de tabellen boven elkaar worden gemaakt. Oftewel Item 1 van de listbox staat onderaan het document in plaats van bovenaan.:confused: Ik kom er niet uit om dit te veranderen, zodat item 1 bovenaan in het document blijft staan en vervolgens daaronder de tabel van item, enz.

Heeft iemand de oplossing hiervoor. Ben al een tijdje aan het zoeken naar een oplossing en met google loop ik ook vast.

Code:
Private Sub cmdOk_Click()
Dim z As Integer
Dim j As Integer
Dim i As Long
Dim myRowCount As Long
Dim oRng As Word.Range
Dim objTable As Word.Table
Set oRng = ActiveDocument.Bookmarks("bmtabel").Range
For j = 0 To lstAdd.ListCount - 1
Set objTable = ActiveDocument.Tables.Add(Range:=oRng, NumRows:=1, NumColumns:=1)
With objTable
.Cell(j + 1, 1).Range.Text = lstAdd.List(j, 0)
.Rows.Add
.Borders.OutsideLineStyle = wdLineStyleSingle
.Borders.OutsideLineWidth = wdLineWidth025pt
.Borders.InsideLineStyle = wdLineStyleSingle
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
.Range.InsertBreak Type:=wdColumnBreak
End With
Next

Unload Me

End Sub
 
Tekst wordt ingevoegd op de plaats van de cursur. En die blijft steeds hetzelfde. Ergo: elke tabel die je invoegt komt boven de vorige te staan. Als de volgorde belangrijk voor je is, dan kun je overwegen om de tabellen in omgekeerde volgorde te maken, dan staan ze wel goed. Of de cursor steeds naar het eind van het document verplaatsen.
 
Hoi Michel,

Duidelijk, maar hoe ik krijg ik dat voor elkaar? ik heb de volgende code geprobeerd in te voegen op verschillende plekken. het levert geen foutmeldingen op, maar het lost ook mijn probleem niet op.: Welke code heb ik nodig op welke plek om dit op te lossen? De volgorde in listbox is a-z, en dat wil ik zo houden.

Code:
oRng.Collapse wdCollapseEnd
oRng.Select

alvast bedankt
 
Je lus is nu oplopend; als je hem omkeert krijg je dus de tabellen in omgekeerde volgorde.
Code:
For j = lstAdd.ListCount - 1 To 0 Step -1
    Set objTable = ActiveDocument.Tables.Add(Range:=oRng, NumRows:=1, NumColumns:=1)
    With objTable
        .Cell(j + 1, 1).Range.Text = lstAdd.List(j, 0)
        .Rows.Add
        .Borders.OutsideLineStyle = wdLineStyleSingle
        .Borders.OutsideLineWidth = wdLineWidth025pt
        .Borders.InsideLineStyle = wdLineStyleSingle
        .PreferredWidthType = wdPreferredWidthPercent
        .PreferredWidth = 100
        .Range.InsertBreak Type:=wdColumnBreak
    End With
Next
 
Top bedankt Michel,

Het werkt nu eindelijk. Die lus begreep ik dus niet, maar als ik het zo zie waar ik de mist in ging dan snap ik ik het nu al wat beter.

Groet,
 
Eigenlijk zijn lussen simpel: je kunt een teller maken die van begin naar eind loopt, of van eind naar begin. Voor de procedure maakt het niet uit. Je geeft dat aan met de parameter Step. Vul je geen Step in, dan wordt de standaard gebruikt: Step=1. Omdat je de cursor niet verplaatst, moet je in jouw geval de omgekeerde volgorde hanteren: Step=-1. Je kunt ook grotere stappen maken, bijvoorbeeld: For i=1 to 11 Step 2. Dan maak je een lus op de waarden 1,3,5,7,9 en 11. Komt ook nog wel eens voor. Kortom: Step is een handige parameter waarmee je leuke dingen kunt doen :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan