Bladwijzers achteraf weer leegmaken en wijzigen

Status
Niet open voor verdere reacties.

Dumtrala

Gebruiker
Lid geworden
18 feb 2005
Berichten
44
Hallo,

Ik heb een ambitieus idee voor een beginner, maar ik vorder steeds meer dus ik waag het erop. Wat ik wil doen is hetvolgende.

Ik heb nu een popup scherm gemaakt waar met van alles in kan vullen en met de OK-knop in het document op de plaat van de verschillende bladwijzers wordt gezet. Nu wil ik proberen (of eigenlijk weten of het mogelijk is) om achteraf deze zelfde bladwijzers weer te verwijderen om de gebruiker een optie van 'opnieuw beginnen' te geven.

Ik ben er al wel achter hoe ik een button kan maken waaraan ik kan koppelen dat de macro weer wordt opgestart en dus het invulscherm weer in beeld komt voor de gebruiker; men kan dan de gegevens opnieuw invullen. Maar dan staat er dus al tekst op de plaats van de bladwijzers en ik wil nu dus proberen om de Bladwijzers ook blanco te maken met de 'opnieuw beginnen'-button, zodat de gebruiker echt overnieuw kan beginnen.

Iemand een idee hoe ik dit kan verwezelijken? Moet ik aan elke bladwijzer een extra code meegeven o.i.d.?

Alvast bedankt!
 
Hai, :D

Nu schrijft jou code de weg naar een locatie (bladwijzer) "I"

Om de waarde te kunnen overschrijven moet de bladwijzer eigenlijk in een "range" (bladwijzer) staan "[ ]"...

Dus je kunt een slimme subprocedure maken welke de data gelijk in zo'n (aanspreekbare range) zet...

Zo kun je dus keer op keer de huidige waarde in het document overschrijven met de nieuw gekozen waarde uit het UserForm..

Dus de aanpassing in de code ziet er zo uit:
Code:
Private Sub CommandButton1_Click()
    RangeMyBookmark "bmGo", Me.ComboBox1.Text & " " & _
            Me.TextBox1.Text
 Unload Me
End Sub

Private Sub UserForm_Initialize()
    With Me.ComboBox1
        .AddItem "Heer"
        .AddItem "Dame"
    End With
End Sub

Private Sub RangeMyBookmark(sBm As String, sCtl As String)
Dim oRange As Word.Range
    With ActiveDocument
       Set oRange = .Bookmarks(sBm).Range
           oRange.Text = sCtl
           .Bookmarks.Add sBm, oRange
       Set oRange = Nothing
    End With
End Sub

Zie bijlage voor code in actie! :thumb:
 

Bijlagen

Duidelijker kan niet, ik ben helemaal gelukkig met je uitleg. NU kan je waarschijnlijk ook de range van de bladwijzers alleen maar wissen, zonder dat er een nieuwe waarde wordt geplaatst door de regel: .Bookmarks.Add sBm, oRange weg te laten..? Weet je wat ik ga het gewoon proberen en laat het je weten ;) :D

Bedankt!
 
Hai, :D

Graag gedaan..jij happy ik happy! :thumb:

Enne ga inderdaad eerst zelf maar eens klooien..deste eerder ben je een echte VBA-Topper! :)
 
Ik snap de code nu wat beter en ik heb uiteindelijk de volgende code samengesteld en het werkt. Nu ga ik nog proberen de actie van het wissen van de invulteksten aan een knop te koppelen, zodat de gebruiker niet steeds ALT + F8 hoeft in te drukken om de Macro weer opnieuw op te starten.


_____________

Private Sub UserForm_Initialize()

With Me.cboAanhef

.AddItem "heer"
.AddItem "mevrouw"

End With

End Sub

Private Sub cmdInvullen_Click()

RangeMyBookmark "bmAanhef", Me.cboAanhef.Text
RangeMyBookmark "bmBedrijfsnaam", Me.txtBedrijfsnaam.Text
RangeMyBookmark "bmTerAttentieVan", Me.txtTerattentievan.Text
RangeMyBookmark "bmAdres", Me.txtAdres.Text
RangeMyBookmark "bmPostcode", Me.TxtPostcode.Text
RangeMyBookmark "bmWoonplaats", Me.TxtWoonplaats.Text
RangeMyBookmark "bmEigenReferentienummer", Me.txtEigenReferentienummer.Text
RangeMyBookmark "bmReferentienummerKlant", Me.txtReferentienummerKlant.Text
RangeMyBookmark "bmBetreft", Me.txtBetreft.Text
RangeMyBookmark "bmAanhefNaam", Me.txtAanhefNaam.Text
RangeMyBookmark "bmDatumGesprek", Me.txtDatumGesprek.Text
RangeMyBookmark "bmAfzenderNaam", Me.txtAfzenderNaam.Text
RangeMyBookmark "bmAfzenderFunctie", Me.txtAfzenderFunctie.Text

Unload Me

End Sub

Private Sub cmdAnnuleren_Click()

Unload Me

End Sub

Private Sub RangeMyBookmark(sBm As String, sCtl As String)
Dim oRange As Word.Range
With ActiveDocument
Set oRange = .Bookmarks(sBm).Range
oRange.Text = sCtl
.Bookmarks.Add sBm, oRange
Set oRange = Nothing
End With
End Sub

_______________

Bedankt (wederom) voor alle hulp.
 
Hai Joost,

Bovenstaande werkt nog steeds goed, geen probleem, alleen heb ik aan het bovenstaande twee Optionbuttons (radiobuttons) toegevoegd zodat de gebruikers een extra keuze kunnen maken; optie 1 of optie 2. Als ik daar eenzelfde Range aankoppel, dus de volgende twee regels toevoeg:

RangeMyBookmark "bmOptie1", Me.chkOptie1.Text
RangeMyBookmark "bmOptie2", Me.chkOptie2.Text

... dan komt er een foutmelding dat deze methode niet ondersteunt wordt voor dit item. De Bookmarks heb ik een paar keer gecontroleerd en zijn juist (bmOptie1 en bmOptie2) en de naam van de Optionbuttons ook. Mag ik ze misschien geen 'chk' noemen, odmat dit eigenlijk voor een checkbox is? Ik dacht dat het puur een manier van werken was, dus dat dit niet uit zou moeten maken.

Ik gebruik dus precies dezelfde code als eerder gepost, met in het Userform twee radio-buttons toegevoegd en in het document twee bookmarks bmOptie1 en 2 en de namen van de buttons in het Userform zijn chkOptie1 en chkOptie2. het doel is dus om ook hetgeen de eerste keer door de gebruiker is ingevuld OOK te wissen, net als alle andere opties.
 
Geplaatst door Dumtrala
Ik snap de code nu wat beter en ik heb uiteindelijk de volgende code samengesteld en het werkt. Nu ga ik nog proberen de actie van het wissen van de invulteksten aan een knop te koppelen, zodat de gebruiker niet steeds ALT + F8 hoeft in te drukken om de Macro weer opnieuw op te starten.

Bedankt (wederom) voor alle hulp.
Hai, :D

Zoals gewoonlijk graag gedaan!

Je code ziet er netjes en overzichtelijk uit!
Tip: Zet wat commentaar bij de code zodat je over een tijdje nog weet wat je gemaakt hebt! (Voor de regel zet je een apostrof { ' } zodat de regel groen word...

Hoe je zo'n werkbalkknopje of werkbalk maakt leg ik hier uit: http://office.webforums.nl/forum/viewtopic.php?t=5217

Succes! :thumb:
 
Geplaatst door Dumtrala
Hai Joost,

Bovenstaande werkt nog steeds goed, geen probleem, alleen heb ik aan het bovenstaande twee Optionbuttons (radiobuttons) toegevoegd zodat de gebruikers een extra keuze kunnen maken; optie 1 of optie 2. Als ik daar eenzelfde Range aankoppel, dus de volgende twee regels toevoeg:

RangeMyBookmark "bmOptie1", Me.chkOptie1.Text
RangeMyBookmark "bmOptie2", Me.chkOptie2.Text
Hai, :D

Naamgeving doet er niet toe (van het control) Als die fout is geeft de Editor vanzelf een Error..(gewoon aan elkaar schrijven waar jij zin in hebt en dan komt het goed)

Wat er fout gaat is dat jij een eigenschap (Text) gebruikt welke niet ondersteund wordt door het gebruikte Control (optionButton)

Selecteer de OptionButton en druk eens op F4. Je ziet nu het eigenschappen venster en kunt daar dus ook alle eigenschappen instellen en je kunt dus ook zien of je die mag gebruiken of niet!

OptionButtons worden over het algemeen gebruikt om Boolean waarde te verkrijgen (Ja, Nee, 1, 0, etc...)

Wat jij wilt is de titel van de OptionButton op het UserForm...Enne het engelse woord voor "Titel" is "Caption"...Dit is een Text (String) waarde en deze kun je dus benutten!

Dus wordt jou code:
Code:
   RangeMyBookmark "bmOptie1", Me.chkOptie1.Caption
   RangeMyBookmark "bmOptie2", Me.chkOptie2.Caption
See Yah! :thumb:
 
Hee Joost,

Misschien is het toch iets anders wat ik wil, ik wil namelijk een hele regel tekst in het document toevoegen als Optie1 wordt gekozen en 2 regels invoegen als Optie2 ingevoegd worden, dus niet de naam van de radio-button. Maar misschien moet ik dan toch Caption gebruiken i.p.v. Text, omdat radio-buttons geen Text ondersteunen, maar dan krijg ik nog steeds een foutmelding. Dit is de code die ik op dit moment heb:

code:

___________________________________
Private Sub chkKoopbrf_Click()

End Sub

Private Sub UserForm_Initialize()

With Me.cboAanhef

.AddItem "heer"
.AddItem "mevrouw"

End With

End Sub

Private Sub cmdInvullen_Click()

RangeMyBookmark "bmBeplantingsvoorstel", Me.chkKoopbrf.Text
RangeMyBookmark "bmVariLeaseKostenbegroting", Me.chkVaribrf.Text

RangeMyBookmark "bmAanhef", Me.cboAanhef.Text
RangeMyBookmark "bmBedrijfsnaam", Me.txtBedrijfsnaam.Text
RangeMyBookmark "bmTerAttentieVan", Me.txtTerattentievan.Text
RangeMyBookmark "bmAdres", Me.txtAdres.Text
RangeMyBookmark "bmPostcode", Me.TxtPostcode.Text
RangeMyBookmark "bmWoonplaats", Me.TxtWoonplaats.Text
RangeMyBookmark "bmEigenReferentienummer", Me.txtEigenReferentienummer.Text
RangeMyBookmark "bmReferentienummerKlant", Me.txtReferentienummerKlant.Text
RangeMyBookmark "bmBetreft", Me.txtBetreft.Text
RangeMyBookmark "bmAanhefNaam", Me.txtAanhefNaam.Text
RangeMyBookmark "bmDatumGesprek", Me.txtDatumGesprek.Text
RangeMyBookmark "bmAfzenderNaam", Me.txtAfzenderNaam.Text
RangeMyBookmark "bmAfzenderFunctie", Me.txtAfzenderFunctie.Text


If chkKoopbrf = True Then

ActiveDocument.Bookmarks("bmBeplantingsvoorstel").Select
Selection.TypeText Text:=" - beplantingsvoorstel vari-lease;"

End If

If chkVaribrf = True Then

ActiveDocument.Bookmarks("bmBeplantingsvoorstel").Select
Selection.TypeText Text:=" - beplantingsvoorstel vari-lease;"

ActiveDocument.Bookmarks("bmVariLeaseKostenbegroting").Select
Selection.TypeText Text:=" - vari-lease met kostenbegroting"

End If

Unload Me

End Sub

Private Sub cmdAnnuleren_Click()

Unload Me

End Sub

Private Sub RangeMyBookmark(sBm As String, sCtl As String)
Dim oRange As Word.Range
With ActiveDocument
Set oRange = .Bookmarks(sBm).Range
oRange.Text = sCtl
.Bookmarks.Add sBm, oRange
Set oRange = Nothing
End With
End Sub
________________________

Beide bookmakers staan in het document (bmBeplantingsvoorstel en bmVariLeaseKostenbegroting) en de option-buttons heb ik de naam gegeven: chkKoopbrf en chkVaribrf, maar er is toch iets fout. Als ik van de eerste regels: 'Text' verander in 'Caption' werkt het ook nog niet. Kan jij nog aanvullend info geven?
 
Aanvulling:
Als ik de code run zoals hierboven weergegeven (met dus: Text), dan krijg ik de foutmelding:
'Fout 438 tijdens uitvoering:
Deze eigenschap of methode wordt niet ondersteund door dit object'.

Als ik 'Text' verander in 'Caption' dan werkt het wel, maar niet goed; dan komt op de plaats van de eerste regel de juiste tekst ('- beplantingsvoorstel vari-lease;'), maar op de tweede regel komt de benaming van de tweede radio-button ('Varibrief'), ook als ik voor de éérste radio-optie kies!

Want ik wil dus bij keuze van de eerst radio-button (Koopbrief) de tekst:
'- beplantingsvoorstel vari-lease;'

laten verschijnen, en bij de keuze van de tweede radio-button (Varibrief)' de tekst(en):
'- beplantingsvoorstel vari-lease;' EN DAARBIJ:
- vari-lease met kostenbegroting'.

Ik hoop dat ik zo wat duidelijker ben.
 
Laatst bewerkt:
Hai, :D

Weinig tijd vandaag dus geen uitgebreide uitleg en code uit de losse pols: (Dus niet getest)
Code:
Option Explicit
Const sBeplant  As String = " - beplantingsvoorstel vari-lease;"
Const sLease    As String = " - vari-lease met kostenbegroting"

Private Sub UserForm_Initialize()
    With Me.cboAanhef
        .AddItem "heer"
        .AddItem "mevrouw"
    End With
End Sub

Private Sub cmdInvullen_Click()
RangeMyBookmark "bmBeplantingsvoorstel", Me.chkKoopbrf.Text
RangeMyBookmark "bmVariLeaseKostenbegroting", Me.chkVaribrf.Text

RangeMyBookmark "bmAanhef", Me.cboAanhef.Text
RangeMyBookmark "bmBedrijfsnaam", Me.txtBedrijfsnaam.Text
RangeMyBookmark "bmTerAttentieVan", Me.txtTerattentievan.Text
RangeMyBookmark "bmAdres", Me.txtAdres.Text
RangeMyBookmark "bmPostcode", Me.TxtPostcode.Text
RangeMyBookmark "bmWoonplaats", Me.TxtWoonplaats.Text
RangeMyBookmark "bmEigenReferentienummer", Me.txtEigenReferentienummer.Text
RangeMyBookmark "bmReferentienummerKlant", Me.txtReferentienummerKlant.Text
RangeMyBookmark "bmBetreft", Me.txtBetreft.Text
RangeMyBookmark "bmAanhefNaam", Me.txtAanhefNaam.Text
RangeMyBookmark "bmDatumGesprek", Me.txtDatumGesprek.Text
RangeMyBookmark "bmAfzenderNaam", Me.txtAfzenderNaam.Text
RangeMyBookmark "bmAfzenderFunctie", Me.txtAfzenderFunctie.Text

If chkKoopbrf = True Then
    RangeMyBookmark bmBeplantingsvoorstel, sBeplant
ElseIf chkVaribrf = True Then
    RangeMyBookmark bmBeplantingsvoorstel, sBeplant
    RangeMyBookmark bmVariLeaseKostenbegroting, sLease
End If
    Unload Me
End Sub

Private Sub cmdAnnuleren_Click()
    Unload Me
End Sub

Private Sub RangeMyBookmark(sBm As String, sCtl As String)
Dim oRange As Word.Range
    With ActiveDocument
        Set oRange = .Bookmarks(sBm).Range
            oRange.Text = sCtl
            .Bookmarks.Add sBm, oRange
        Set oRange = Nothing
    End With
End Sub
Als er iets nog niet werkt plaats dan het betreffende document hier zodat ik kan zien wat er fout gaat! (voor omschrijven zijn er reeds teveel handelingen en dan gaat zien beter)

See Yah! :thumb:
 
Hierbij het document; ik zou neit weten waar het fout gaat; ik heb zelf wel wat dingen geprobeerd, maar helaas nog niet werkend gekregen.
 

Bijlagen

Hai, :D

Dat krijg je ervan als je het uit je hoofd aanpast hé! (heb het tegen mijzelf...) :p

De eerste twee regels moeten eruit:
Code:
Private Sub cmdInvullen_Click()
RangeMyBookmark "bmBeplantingsvoorstel", Me.chkKoopbrf.Text
RangeMyBookmark "bmVariLeaseKostenbegroting", Me.chkVaribrf.Text
Deze zorgen voor de dubbele invoer!

Tevens ben ik de aanhalingstekens vergeten bij de bladwijzers in de IF-Statements..

Zie bijlage nu gaat ie goed! :thumb:
 

Bijlagen

Het werkt inderdaad, alleen heb ik dan nog één probleem. Als ik namelijk iets fout heb ingevuld bijvoorbeeld, en voor Varibrief heb gekozen, dan worden er dus twee regels ingevuld in het document, maar als ik dit opnieuw wil invullen en de macro opnieuw start, dan blijven de al ingevulde twee regels staan en worden niet weggehaald. Hoe kan ik er voor zorgen dan ook de twee extra ingevulde regels tekst worden weggehaald bij opnieuw starten?
 
Hai,

Probeer zelf ook enthousiast te blijven!:p

De aanpassing in de bijlage doet het gevraagde...

See Yah! :thumb:
 

Bijlagen

Joost... wederom bedankt! :) Ik ga proberen zelf ook eens te snappen hoe VBA is opgebouwd in eerste instantie en ga wat boeken aanschaffen en zal proberen niet voor elke dingetje een post te maken.
 
Hai, :D

Goed zo graag gedaan!

Enne veel succes met leren en oefenen...en kom vooral vragen als je er niet uitkomt....? :thumb:
 
[Offtopic, voor een compliment]

Hai Joost Verdaasdonk,

Ik weet bij wie ik moet zijn als ik iets over VBA wil weten.:thumb:

Dennis.
 
Geplaatst door DENNIS90
[Offtopic, voor een compliment]

Hai Joost Verdaasdonk,

Ik weet bij wie ik moet zijn als ik iets over VBA wil weten.:thumb:

Dennis.
Hi Dennis, :)

thnxxx...:o :o
 
Hai Joost Verdaasdonk,

Graag gedaan, wilde je gewoon complimenteren.
Vind VBA Zelf mooi, maar ik doe bijna niets met VBA. Ik zal derhalve daarover ook geen vragen stellen , maar nogmaals: persoonlijk vind ik VBA heel krachtig en het wordt overal toegepast.

Groetjes,

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan