VBA formulier code voert geen gegevens in mbv bladwijzers

Status
Niet open voor verdere reacties.

makamminga

Gebruiker
Lid geworden
19 jun 2009
Berichten
12
Hallo daar,

Ik hoop dat iemand naar mijn code zou willen kijken die ik niet werkend krijg. Het is uit het boekje VBA voor Word Acces en Excel in 10 minuten, maar ik krijg het niet aan de praat.

De bedoeling is dat het formulier aangeroepen wordt en bij invoer de bladwijzers gevuld worden op het moment dat ik op OK klik. Dit is niet het geval.

Ik gebruik Office 2003 met VBA versie 6.3

VBAProject downloaden

Vriendelijke groet,

Martijn
 
1. maak gebruik van documentvariabelen (menubalk/invoegen/veld/docvariable) in plaats van bladwijzers.
2.geef de objekten van het gebruikersformulier namen die overeenkomen met de docuemtnvariabelen waarnaar ze verwijzen.
3. geef de objekten van het gebruikersformulier namen die het gebruikt van lusssen vergemakkelijken.
4. vul comboboxen niet met de methode additem maar met de eigenschap list.

Onderstaande code doet dan hetzelfde als die van jou:

Code:
Private Sub Document_New()
  frmUitnodigingGesprek.Show
End Sub

Private Sub UserForm_Initialize()
  tekst1.List = Split("Utrecht, Spierstraat 88|Utrecht, Spierstraat 90|Antwerpen, Amerikalei 12|Antwerpen, Amerikalei 14", "|")
  tekst2.List = Split("Maandag|dinsdag|woensdag|Donderdag|Vrijdag", "|")
  tekst3.List = Split("een half uur|1 uur|2 uur|de hele ochtend|de hele middag|de hele dag", "|")
  tekst4.List = Split("Utrecht 88|Utrecht 90|Antwerpen 12|Antwerpen 14", "|")
End Sub

Private Sub cmd_Annuleren_Click()
  ActiveDocument.Close SaveChanges:=False
End Sub

Private Sub cmdClear_Click()
  On Error Resume Next
    
  For Each cl In Controls
    cl.Value = ""
  Next
End Sub

Private Sub cmdOK_click()
  With ActiveDocument
    For j = 1 To 13
      .Variables("tekst" & j) = Me("tekst" & j).Value
    Next
    .Fields.Update
  End With

  Hide
End Sub
 
Dank voor uw reactie

Hallo SNB,

Ik vind het uiterst vriendelijk dat u de moeite neemt om de (of een deel) van de code te herschrijven, maar ik snap daar echt helemaal niks van. Zoals ik het in het document vanuit het boek heb uitgevoerd, maakt dat ik het nog snap, maar dit is echt abacradabra voor mij. Zou u er aub nog een keer naar willen kijken dat ik met de huidige code het wel kan snappen?

Nogmaals, de moeite stel ik zeer op prijs!

Groetjes Martijn
 
Laat de code stapsgewijs lopen, dan wordt je langzaamaan wijzer.
Ik heb weinig waardering voor de code uit je leerboek.
Daar besteed ik liever geen tijd aan.
Het adagium is: hoe gestruktureerder je werkt en het gebruikersformulier opbouwt hoe minder code je nodig hebt om resultaten te boeken. Hoe minder code hoe minder fouten en dus hoe eenvoudiger fouten te ontdekken/verwijderen.

Kijk voor een voorbeeld wat ik bedoel hier
 
Laatst bewerkt:
De oude code klopt nu, maar hoe doe ik dat met de nieuwe code


Dag Snb,

Het heeft even geduurd, maar het was een druk weekend, excuses daarvoor.
Ik heb de code in 'mijn stijl' toch nog goed gekregen, maar nieuwsgierig als ik ben, wil ik eigenlijk wel weten hoe ik dat met uw code nou in orde kan krijgen.

Ik gebruik liever geen text for j 1 13, dus ik hou mijn eigen variabelen liever aan als u het niet erg vind.

Hier ben ik zover:


Private Sub Document_New()
frmUitnodigingGesprek.Show
End Sub

Private Sub cmdAnnuleren_Click()
Unload Me
ActiveDocument.Close SaveChanges:=False
End Sub

Private Sub cmdClear_Click()
On Error Resume Next

For Each cl In Controls
cl.Value = ""
Next
End Sub

"Tot hier is het in orde, maar de dim functies kan ik niet aanroepen doordat ik er geen .Value achter mag zetten in de ActiveDocument.Variables (iets verderop)"

Private Sub cmdOK_Click()
Dim strAfsluiting As String
Dim strAdresAfzender As String

If optAfsluiting1 = True Then
strAfsluiting = "Vriendelijke groet"
End If
If optAfsluiting2 = True Then
strAfsluiting = "Hoogachtend"
End If
If optAfsluiting3 = True Then
strAfsluiting = "Sportieve groet"
End If
If optAfsluiting4 = True Then
strAfsluiting = "Graag tot ziens"
End If

If cboAdresAfzender.Value = "Utrecht 88" Then
strAdresAfzender = "De Vlek Sportscholen" _
& vbCrLf & "Spierstraat 88" _
& vbCrLf & "1202 WC Utrecht" _
& vbCrLf & "Nederland"
End If

If cboAdresAfzender.Value = "Utrecht 90" Then
strAdresAfzender = "De Vlek Sportscholen" _
& vbCrLf & "Spierstraat 90" _
& vbCrLf & "1202 WC Utrecht" _
& vbCrLf & "Nederland"
End If

If cboAdresAfzender.Value = "Antwerpen 12" Then
strAdresAfzender = "De Vlek Sportscholen" _
& vbCrLf & "Amerikalei 12" _
& vbCrLf & "1020 Antwerpen" _
& vbCrLf & "België"
End If

If cboAdresAfzender.Value = "Antwerpen 14" Then
strAdresAfzender = "De Vlek Sportscholen" _
& vbCrLf & "Amerikalei 12" _
& vbCrLf & "1202 WB Antwerpen" _
& vbCrLf & "België"
End If

Application.ScreenUpdating = False

With ActiveDocument

.Variables("NaamOntvanger") = Me("txtNaamOntvanger").Value
.Variables("AdresOntvanger") = Me("txtAdresOntvanger").Value
.Variables("Aanhef") = Me("txtAanhef").Value
.Variables("Functie") = Me("txtFunctie").Value
.Variables("LocatieGesprek") = Me("cboLocatieGesprek").Value
.Variables("DagGesprek") = Me("cboDagGesprek").Value
.Variables("DatumGesprek") = Me("txtDatumGesprek").Value
.Variables("TijdGesprek") = Me("txtTijdGesprek").Value
.Variables("DuurGesprek") = Me("cboDuurGesprek").Value
.Variables("Afsluiting") = Me("strAfsluiting")
.Variables("NaamAfzender") = Me("txtNaamAfzender").Value
.Variables("FunctieAfzender") = Me("txtFunctieAfzender").Value
.Variables("AdresAfzender") = Me("strAdresAfzender")

Deze moet ik eigenlijk nog instellen, maar ik weet de code niet en kan het niet op internet vinden.

.Fields.Update
End With

Hide
End Sub

Private Sub UserForm_Initialize()
cboLocatieGesprek.List = Split("Utrecht, Spierstraat 88|Utrecht, Spierstraat 90|Antwerpen, Amerikalei 12|Antwerpen, Amerikalei 14", "|")
cboDuurGesprek.List = Split("een half uur|1 uur|2 uur|de hele ochtend|de hele middag|de hele dag", "|")
cboDagGesprek.List = Split("Maandag|dinsdag|woensdag|Donderdag|Vrijdag", "|")
cboAdresAfzender.List = Split("Utrecht 88|Utrecht 90|Antwerpen 12|Antwerpen 14", "|")
End Sub


En als laatste, krijg ik door de DocVariabele een codeblokje als ik enter in het formulier opgeef. Die krijg ik er ook niet uit.

Heeft u nog tijd voor een antwoord op deze vragen? Ik stel het bijzonder op prijs!!!

Met vriendelijke groetjes,

Martijn
 
De oude code als archief

Voor wie begint met vba kan je deze code inlezen.

Met een beetje geluk zie je daarna de professionele versie.

Cross my fingers and hope to die ;)

Groetjes Martijn
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan