[VBA/Word] Indien leeg, alinea/regel verwijderen (in tabel)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JanW23
  • Registratie: Juni 2002
  • Laatst online: 01-05 11:06

JanW23

Mine mine mine mine

Topicstarter
We zijn al dagen bezig een sjabloon werkend te krijgen en 1 ding lukt ons niet.
Wij hebben in ons briefhoofd (deze briefhoofd staat in zijn geheel in een cel) een aantal regels zoals: Naam, afdeling, adres. Dit zijn variabelen en deze velden worden gevuld door ons CMS systeem. Als er in het CMS geen afdeling ingevuld staat, laat hij deze dus leeg en krijg je in Word een lege regel. Deze regel willen wij weg hebben indien hier niets staat.

Wij hebben hier de volgende code(s) voor geprobeerd, maar het resultaat is gewoon een lege regel:
(onze bladwijzer voor de var afdeling heet dus "locnaam")

code:
1
2
3
4
5
6
7
8
9
'Verwijder de lege regel wanneer geen locatienaam is ingevuld
If ActiveDocument.Bookmarks.Exists("locnaam") = True Then
    Selection.GoTo What:=wdGoToBookmark, Name:="locnaam"
    locnaam$ = Trim(CleanString(Selection()))
    If locnaam$ = "" Then
    Selection.Expand Unit:=wdParagraph
    Selection.Delete
    End If
End If


code:
1
2
3
4
5
6
7
8
'Verwijder de lege regel wanneer geen locatienaam is ingevuld
If ActiveDocument.Bookmarks.Exists("locnaam") = True Then
    Selection.GoTo What:=wdGoToBookmark, Name:="locnaam"
    locnaam$ = Trim(CleanString(Selection()))
    If locnaam$ = "" Then
    ActiveDocument.Bookmarks("locnaam").Delete
    End If
End If


Een code als een kleine letter veranderen in een hoofdletter werkt wel. Dus ik denk niet dat het te maken heeft dat het in een cel staat
code:
1
2
3
4
5
6
'Wijzig de eerste letter van het tussenvoegsel in de achternaam naar upper-case (achter "Geachte...")
If ActiveDocument.Bookmarks.Exists("achternaam") = True Then
    Selection.GoTo What:=wdGoToBookmark, Name:="achternaam"
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Text = UCase(Selection())
End If


Mijn programmeerkennis is aardig beperkt (ooit btje in Pascal geprogrammeerd), dus n00b-taal is gewenst :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Lijkt me een kwestie van debuggen. Als je dit probeert met enkele stapjes (F8 ipv F5) of een breakpoint zet op regel 6 (F9) dan zul je zien dat de conditie false is, en regel 6 niet wordt uitgevoerd. Dit komt omdat locnaam een enter bevat die niet wordt weggefilterd. Als je "" veranderd in Chr(13) (een enter) dan zul je waarschijnlijk zien dat het wel werkt.

Juiste indenting, dus een tabje voor regel 6 en 7, wil ook nog wel eens helpen om je code te begrijpen. En met pascalervaring zou je moeten weten hoe nuttig het is om variabelen te declareren (Dim locnaam As String ; geen achterhaalde dollartekens gebruiken; Option Explicit bovenaan je bestand zetten voor controle). ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten