Bladwijzers in een document als voorwaarde van een IF functie

Status
Niet open voor verdere reacties.

weltevreden

Gebruiker
Lid geworden
18 nov 2003
Berichten
13
Ik heb voor ons bedrijf een standaardbrief gemaakt, met daarin een tabel ingevoegd.

In de eerste kolom staat een test die een waarde uit de database van ons softwarepakket haalt (als bijv een type branche in de database voorkomt verschijnt een 1, die als bladwijzer is gedefinieerd) . In de overige kolommen staat enkel tekst.

Nu wil ik een macro maken die kijkt of de waarde in de eerste kolom voldoet aan een criterium. Zodra deze afwijkt, moet de regel in de tabel verwijderd worden.

Maar hoe gebruik ik dan een bladwijzer als test, of een aanduiding van kolomnummer?

Sub Regelverwijderen()
If Bladwijzer < 1 Then
Verwijderen
End Sub

Function Verwijderen()
Selection.Rows.Delete
End Function

Alvast bedankt voor een reactie!
 
Code:
Sub tst()
  With ActiveDocument
    If val(.bookmarks("test").range.text)=1 Then .tables(1).rows(1).delete
  End With
End Sub

NB. Begin met VBA (de macro-taal in Office) met het begin en niet halverwege of op nivo 8.
 
Geweldig het werkt!

Als ik hem nu opsla als auto_openen, wordt hij logischer wijze uitgevoerd op het moment dat het document wordt geopend. Dan is de test voor de branches nog niet uitgevoerd lijkt me en staat er nog geen 1 vermeld

Hoe stel ik in, dat eerst de testen voor de branches worden uitgevoerd en dat daarna pas de macro wordt uitgevoerd?
 
Inmiddels gelukt, de macro start nu na het document is opgemaakt en makkelijker dan gedacht:

Sub Eindeopmaak()
If MsgBox("Wilt u het document nu bijwerken?", vbYesNo + vbQuestion, Bijwerken) = vbNo Then
Exit Sub
Else
Regelsverwijderen
End If
End Sub

Maar om terug te komen op deze regel:
If val(.bookmarks("test").range.text)=1 Then .tables(1).rows(1).delete

Dan zou ik alle regels moeten ingeven die verwijdert moeten worden? Is er een manier om alle regels te verwijderen die de 1 in de 1e kolom hebben staan?
 
Laatst bewerkt:
Ik ben nog steeds aan het puzzelen.....

Nu kwam ik deze macro tegen voor Excel, kan iemand me helpen hem te vertalen voor Word:

Public Sub pfDelRows()

totalrows = ActiveSheet.UsedRange.Rows.Count

For Row = 1 To totalrows
If Cells(Row, 2).Value = vbEmpty Then
Rows(Row).Delete
End If
Next Row

End Sub
 
Gelukt!

Onderstaand de macro om de hele rij te verwijderen als in de 1e kolom een waarde (Z) staat

Sub RijV()

Dim i As Integer, j As Integer, flag As Boolean, test As Range
For i = ActiveDocument.Tables(2).Rows.Count To 1 Step -1
flag = False
For j = 1 To ActiveDocument.Tables(2).Rows(i).Cells.Count
If Val(ActiveDocument.Tables(2).Cell(i, j).Range) = Z Then
flag = True
End If
Next j
If flag = True Then
ActiveDocument.Tables(2).Rows(i).Delete
End If
Next i

End Sub
 
Code:
Sub RijV()
  With ActiveDocument.Tables(2)
    For i = .Rows.Count To 1 Step -1
      If .Cell(i,1).Range = "Z" Then .rows(i).delete
    Next
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan