Decimal tab in vba

Status
Niet open voor verdere reacties.

Symphysodon

Gebruiker
Lid geworden
14 dec 2012
Berichten
468
Beste Forummers,

Ik heb een stukje code voor het opmaken van tabellen in Word wat ik uit wil breiden. Het gaat erom dat per kolom de decimale punten recht onder elkaar komen te staan door middel van het gebruik van de decimale tab. Nu doe ik dit met de hand en dat is erg tijdrovend, zeker als je het achteraf moet doen. Is dit mogelijk?

Code:
Sub Tabelopmaak_in_Word()
'Programma format tabellen

'Selection.Cells.DistributeWidth
    
With Selection.ParagraphFormat
    .SpaceBefore = 4
    .SpaceAfter = 2
End With

Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
    
End Sub

M.v.g.
Marco
 

Bijlagen

  • Decimaal tab.docm
    15,3 KB · Weergaven: 51
Laatst bewerkt:
Een decimale tab, die centreer je toch niet in een kolom, de plaats daarvan laat je afhangen van hoe de invoer er uitziet. Neem bv. de vierde kolom (die begint met 1.7557), als je de tab zou centreren, dan valt een gedeelte van de cijfers na de punt buiten de kolom.
 
Selecteer alle cellen met getallen en voer deze macro uit:
Code:
Sub Macro1()
With Selection.ParagraphFormat
.Alignment = wdAlignParagraphCenter
.TabStops.ClearAll
.TabStops.Add Position:=CentimetersToPoints(0), Alignment:=wdAlignTabDecimal, Leader:=wdTabLeaderSpaces
End With
End Sub
 
Ik snap eerlijk gezegd niet waarom je dat met een macro doet; tabel selecteren, Decimale tab symbool pakken en één keer klikken in de eerste kolom en je bent klaar. Kost heel wat minder tijd dan een macro maken. Je kunt ook overautomatiseren :).
 
Dat ben ik met je eens OctaFish. Maar jouw lange ervaring op dit forum zal je wel al geleerd hebben dat je wat vragen betreft nergens meer van moet staan te kijken ;)
Dit is niet denigrerend bedoeld t.o.v jou hoor Symphysodon, je mag vragen wat je wil.
 
Uiteraard mag alles gevraagd worden, en dan geven we doorgaans nog antwoord ook :). We (ik althans) weten ook niet waarom TS het vraagt; wellicht als onderdeel van een leerproces om macro's te maken. En dan is het uiteraard een andere insteek. Maar vanuit werkprocessen bekeken kun je m.i. te snel naar een macro grijpen.
 
Klopt misschien wel maar doe je dat dan ook met >1000 tabellen gekopieerd vanuit Excel. Want volgens mij is het niet mogelijk om dit al in Excel te doen.

De macro werkt niet goed of ik heb een instelling verkeerd staan. Als ik de macro gebruik komt de decimal tab in de kantlijn te staan en als ik het met de liniaal doe dan komt de decimal tab wel in het midden te staan (of waar ik hem dan ook plaats) alleen de decimaal tekens in de tabel worden niet onder elkaar geplaatst. Dit lukt op andere computers wel. In Landeninstellingen heb ik de punt en de comma al een keer omgedraaid maar dat is waarschijnlijk het probleem niet. Als ik het op een andere computer instel, het bestand vervolgens open op mijn eigen computer, de decimal tab weghaal en weer terugzet dan werkt het wel met de liniaal. De macro centreert alleen de getallen, niet de decimale punten.
 
Probeer het eens met deze macro:
Code:
Sub mcrTabInTabel()
Dim tbl As Word.Table
Dim doc As Document
    
    Set doc = ActiveDocument
    For Each tbl In doc.Tables
        tbl.Select
        With Selection.ParagraphFormat
            .TabStops.Add Position:=CentimetersToPoints(1.38), Alignment:=wdAlignTabDecimal, Leader:=wdTabLeaderSpaces
            .SpaceBefore = 4
            .SpaceAfter = 2
        End With
        tbl.AutoFitBehavior wdAutoFitWindow
    Next tbl
    Selection.Collapse
End Sub
 
In het bestand in de bijlage heb ik de code getest, maar het werkt niet. De tweede derde en vierde kolom eerste tabel staan de getallen goed maar die heb handmatig op een andere computer gemaakt. Voordat ik jou code ging testen heb ik eerst alle tabs weggehaald.
 

Bijlagen

  • decimal tab.docx
    13,5 KB · Weergaven: 38
De macro doet het bij mij prima met de macro. Wél een 'probleempje': je gebruikt een punt als decimaalteken, maar in Nederland (en bij mij dus ook) is dat de komma. Ik moest dus, na het draaien van de macro, ook de punten vervangen door een komma, anders gebeurt er inderdaad niks.
 
Bij ons wordt het door elkaar gebruikt. Het probleem is dat de apparatuur vaak een amerikaanse notatie gebruiken terwijl de boekhouding gewoon de Nederlandse comma.

In Excel gebruik ik vaak
Code:
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
Application.UseSystemSeparators = False
Kan dit in Word ook zo geautimatiseerd worden, met zoeken en vervangen ofzo?

In de landeninstelling heb ik Decimaalteken op , gezet en Cijfergroeperingssymbool op .
Nog steeds staan de getallen gecentreerd en niet de ,
De decimaal tab staat wel in de liniaal en als ik die verschuif dan verschuiven de getallen mee, alleen de coma's staan niet onder elkaar.
 
Laatst bewerkt:
Maar heb je de punten in je document dan wel vervangen door komma's? Want anders werkt dat uiteraard niet. Ik heb nog niet gemerkt dat je in Word het decimaalteken kan aanpassen. Word is ook geen rekenprogramma zoals Excel. De code die in Excel dus wél werkt, zal in Word niet werken.
 
Het is gelukt. Nadat ik het programma met succes getest heb op andere computers heb ik mijn eigen computer maar eens opnieuw opgestart en dat heeft geholpen.

OctaFish en zapatr super bedankt.
 
mm helaas niet helemaal. Het werkt alleen met een opgebouwde tabel in Word. Ik maak al mijn tabellen in Excel en kopieer ze vervolgens in Word en dan werkt de macro betreft de TabDecimal op één of andere manier niet meer. Ook niet als ik in Excel de comma gebruik en het systeem ook op comma staat.
 
Dan maak je er toch een object van? Je moet denk ik Plakken Speciaal gebruiken, en er tekst van maken.
 
Heb je de tabel in je voorbeeldje ook op die manier geplakt? Want daar gaat het volgens mij wél goed. Maak anders een voorbeeldje met jouw werkwijze, dan kan ik kijken of daar nog wat aan te doen is :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan