frmNaamVanFormulier.Show zorgt voor vastlopen

  • Onderwerp starter Onderwerp starter Dubya
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Dubya

Gebruiker
Lid geworden
22 okt 2012
Berichten
6
Op 22/10 heb ik hier een vraag gesteld ivm dynamisch vullen van dropdown boxes in een Excel 2010 formulier.

De oplossingen aangereikt door Warm Bakkertje en SNB hebben gewerkt en het formulier werkt.
De raadgeving van Warm Bakkertje op de huidige 28 regels te veranderen door een simpelere oplossing van 4 regels, die is (nog) niet ingevoerd (dat komt misschien later, wanneer mijn werkgever me op de VBA-cursus heeft gestuurd).

Verder bouwend op dat formulier heb ik een nieuw Excelbestand aangemaakt, waarbij alle ranges e.d. werden aangepast
Dit nieuwe formulier loopt nu telkens vast.
Bij de foutopsporing krijg ik de melding dat het hier fout loopt:

Code:
Sub Rechthoek1_Klikken()
  frmIngaveZiekte.Show
End Sub

Er staat dan een gele pijl ter hoogte van frmIngaveZiekte.Show.
Gevolg: ik krijg geen formulier te zien!

Wie kan me vertellen waar ik deze keer in de fout ga...
Het nieuwe bestand is bijgesloten. Naast het vastlopen op de frmIngaveZiekte.Show zal er ook nog werk zijn aan het wegschrijven naar correcte kolommen, maar dat krijg ik (wellicht) zelf wel in orde.

Alvast bedankt!

G's
Dubya

Bekijk bijlage L_PGRA_Ziektebeheer_2013_Voor_Forum.xlsm
 
Laatst bewerkt door een moderator:
Verander in de formules bij gedefinïeerde namen het bladnaam van "LookupList" in "Opzoeklijsten".
 
Ha, de Werner uit Deurne :d
Al resultaat bij je werkgever betreffende de VBA-cursus ? :d
Code:
Private Sub UserForm_Initialize()
  cboPersoneel.List = Sheets("opzoeklijsten").Columns(1).SpecialCells(2).Value
  cboLocatie.List = Sheets("opzoeklijsten").Columns(6).SpecialCells(2).Value
  cboType.List = Sheets("opzoeklijsten").Columns(9).SpecialCells(2).Value
  cboFase.List = Sheets("opzoeklijsten").Columns(12).SpecialCells(2).Value
  cboWeekdag.List = Sheets("opzoeklijsten").Columns(15).SpecialCells(2).Value
  Me.cboPersoneel.SetFocus
End Sub
 
Laatst bewerkt:
Ik zag twee namen staan in de openingspost dus aan de code hoefde ik niet sleutelen dacht ik.

Maar zo te zien zal het dan wel een tijdje geleden zijn wanneer dit is gemaakt. :d
Het bladnaam was gewijzigd, en dus niet verder gekeken dan nodig.
 
We zijn er ... BIJNA!

Alvast bedankt voor de suggesties op mijn eerste post. De opmerkingen hebben me verder geholpen.

Ik ben dus al flink opgeschoten met het formulier, maar zit nog met 2 knelpuntjes:
- bij het opzoeken van een personeelslid krijg ik nu al familienaam + voornaam te zien in de combobox --> kan daar nog een derde kolom bij (nl. personeelsnummer: dat is altijd uniek, terwijl we in principe twee collega's met identieke naam kunnen hebben)
- ik krijg nu wel familienaam + voornaam te zien in combobox (en straks dus misschien nog + personeelsnummer), MAAR... bij indrukken van de knop "Geef ziektemelding in" dan wordt enkel de familienaam verwerkt. De gekoppelde voornaam (en straks misschien dus personeelsnummer) blijft leeg...

Nog een berichtje voor Warm Bakkertje: we zijn ondertussen, na wat informeel rondhoren hier en daar, al met 9 collega's die VBA onder de knie willen krijgen. Het is hier ambtenarij, dus we moeten wat geduld hebben maar onze HRM-collega's hebben gezegd dat ze werk gaan maken van die cursus! Nog wat geduld dus (en daarna vooral flink wat studiewerk...)

G's

DubyaBekijk bijlage L_PGRA_Ziektebeheer_2013_Forum_Test_Kolommen.xlsm
 
Kom je nu dichterbij?
Vraag 1.
Code:
For Each cPersoneel In ws.Range("Personeellijst")
  With cboPersoneel
    .AddItem cPersoneel.Value
    .List(.ListCount - 1, 1) = cPersoneel.Offset(, 1).Value
    .List(.ListCount - 1, 2) = cPersoneel.Offset(, -1).Value
  End With
Next cPersoneel
Vraag 2.
Code:
With ws
  .Cells(lRow, 2) = cboPersoneel
  .Cells(lRow, 1) = cboPersoneel.List(cPersoneel, 2)
  .Cells(lRow, 3) = cboPersoneel.List(cPersoneel, 1)
  .Cells(lRow, 4) = cboLocatie
  .Cells(lRow, 5) = txtIngaveDatum
  .Cells(lRow, 6) = txtStartZiekte
  .Cells(lRow, 7) = txtEindZiekte
  .Cells(lRow, 8) = txtAantalDagen
  .Cells(lRow, 9) = cboType
  .Cells(lRow, 10) = cboFase
  .Cells(lRow, 11) = cboWeekdag
 End With
 
Laatst bewerkt:
Schrijf alles in 1 beweging weg zodat je het aantal schrijfbewerkingen tot een minimum herleidt.
Code:
Dim data(11)
data(0) = cboPersoneel.List(cPersoneel, 2)
data(1) = cboPersoneel
data(2) = cboPersoneel.List(cPersoneel, 1)
data(3) = cboLocatie
data(4) = DateValue(txtIngaveDatum)
data(5) = DateValue(txtStartZiekte)
data(6) = DateValue(txtEindZiekte)
data(7) = txtAantalDagen
data(8) = cboType
data(9) = cboFase
data(10) = cboWeekdag
ws.Cells(lRow, 1).Resize(, 11) = data
 
Laatst bewerkt:
@HSV
Bedankt voor de oplossing. Je voorstel is ondertussen ingevoegd en alles werkt pico bello. Mijn medewerkster is er al volop mee aan de slag!

@Warm Bakkertje
Je suggestie voor een economischer gebruik van code steeks ondertussen in mijn VBA-documap. Als ik straks op cursus trek zal ik al blij zijn dat ik mijn eigen problemen kan oplossen. Het rationaliseren van code... dat wordt dan een volgende stap! Maar evengoed: een dikke DANK U voor de aangedragen oplossingen.

En nu: op naar het volgende project dat hier dringend moet worden aangepakt!

G's

Dubya
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan