Compilatiefout in verborgen module - Excel VBA

Status
Niet open voor verdere reacties.

Chrystals

Gebruiker
Lid geworden
30 jan 2012
Berichten
24
Beste experts,

Sinds vorige week kamp ik met een probleem in VBA.
Ik heb hier twee userforms in gebruik met Data in tabblad "Data". De listbox haalt hier gegevens uit kolom A en vervolgens heb ik een aantal tekstboxen die gevuld worden afhankelijk van wat er in de listbox wordt geselecteerd.

Dit gebruiken we al meerdere jaren zo.
Sinds vorige week heeft een collega een nieuwe laptop aangeschaft met windows 10 en office 2016 (zelf heb ik Windows 7 en office 2016)
Op mijn pc werkt alles gewoon maar zodra hij een waarde aanklikt in de listbox krijgt hij de foutmelding "compilatiefout in verborgen module"+ de naam van de userform.

Ik ben er al achter dat de fout waarschijnlijk zit in onderstaande (gedeeltelijke) code:

Code:
Private Sub UserForm_Initialize()
  With Sheets("Data")
   ListBox1.List = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value
   End With
   
    cbNaammk.List = Sheets("MKV").Columns(2).SpecialCells(2).Offset(1).SpecialCells(2).Value
    cbLft.List = Sheets("Lijst").Columns(10).SpecialCells(2).Offset(1).SpecialCells(2).Value

Ik kom er maar niet uit.
Is het handig als ik een uitgekleed bestand maak en deze post? of ziet iemand al gelijk wat ik Faliekant verkeerd doe?

Alvast bedankt!

Groet, Bionda
 
Mij lijkt dat de fout eerder zit in de gebeurtenisprocedure Listbox1_click of Listbox1_change.
 
ik ga s kijken wat er gebeurt als ik daar wat verander.

edit: dat ziet er als volgt uit (dit zijn de tekstboxen die gevuld worden):
Code:
Private Sub ListBox1_change()

On Error Resume Next
    With [Data!A1:A410]
    
        txtlidnr.Text = .Find((ListBox1.Value), LookIn:=xlValues).Offset(, 0).Value
        txtProject.Text = .Find((ListBox1.Value), LookIn:=xlValues).Offset(, 1).Value
        txtNaam.Text = .Find((ListBox1.Value), LookIn:=xlValues).Offset(, 2).Value
'etc
'etc
Application.EnableEvents = True
     End With

Wanneer ik de foutopsporing gebruik begint de stap bij Private Sub UserForm_Initialize() vanaf hier wordt elke regel geel.
 
Laatst bewerkt:
Dan lijkt me dit voor de hand liggender:

Code:
Private Sub UserForm_Initialize()
   ListBox1.List = Sheets("Data").cells(1).currentregion.Value
   cbNaammk.List = Sheets("MKV").Columns(2).SpecialCells(2).Offset(1).SpecialCells(2).Value
   cbLft.List = Sheets("Lijst").Columns(10).SpecialCells(2).Offset(1).SpecialCells(2).Value
End Sub

Private Sub ListBox1_change()
  txtlidnr.Text = listbox1.value
  txtProject.Text = listbox1.list(listbox1.listindex,1)
  txtNaam.Text = listbox1.list(listbox1.listindex,2)
End sub

en die listbox1_change gebeurtenis kan eenvoudiger, als de tekstvakken wat handiger (T_0 t/m T_9, bijv.) benoemd zouden worden:

Code:
Private Sub ListBox1_change()
  for j=0 to ubound(listbox1.list,2)
     Me("T_" & j) = listbox1.list(listbox1.listindex,j)
  next
End sub
 
Laatst bewerkt:
Ik heb alles aangepast, helaas nog niet met nieuwe namen voor de tekstboxen want dit is nog al veel omdat even snel te doen maar, ga ik zeker doen.
Ik hoop dat de foutmelding "compilatiefout in verborgen module" wegblijft al ben ik er bang voor.
Kan het ook liggen aan Windows 10 welke hij nu gebruikt?
 
Gebruiken jullie dezelfde versie van office 2016? (32 bit of 64 bit) Voor zover ik gelezen heb wordt de 64 bit versie nogal afgeraden en kan mogelijk de veroorzaker van het probleem zijn.
 
Hoi VenA, we gebruiken beide de 64 bit versie. dit ga ik ook eens uitzoeken.
Ik kan me namelijk niet voorstellen dat bij al mijn andere collega's het wel werkt en bij hem niet.
Bedankt voor de tip, ik laat t nog weten.
 
Ik zat er helemaal naast, we hebben beide de 32 bits versie.
Wel heb ik gelezen dat office 365 het eea van de pc gooit tijdens installatie als het op VBA aankomt, geadviseerd werd om VBA7 te installeren.
Dat hebben we beide gedaan maar helaas zonder resultaat, bij mijn collega werkt het nog steeds niet en krijgt nog steeds de foutmelding: Compilatiefout in verborgen module.

Zou het toch niet te maken kunnen hebben met Windows 10?
Daarnaast blijft bij de foutopsporing in mijn VBA onderstaand als fout te worden weergegeven.

Code:
Private Sub UserForm_Initialize()
   ListBox1.List = Sheets("Data").cells(1).currentregion.Value
   cbNaammk.List = Sheets("MKV").Columns(2).SpecialCells(2).Offset(1).SpecialCells(2).Value
   cbLft.List = Sheets("Lijst").Columns(10).SpecialCells(2).Offset(1).SpecialCells(2).Value
End Sub

Nu heb ik ook ergens gelezen dat het belangrijk is om error handling te gebruiken, hier heb ik dan geen kaas van gegeten.
Misschien nog andere ideeën?

Alvast bedankt weer.
 
Ik zou zeggen af het tijd wordt om het document er eens bij te doen.
 
Ik ben bezig met het maken van een voorbeeld bestandje.
Na nog enig speurwerk op internet denk ik dat het ook zou kunnen liggen aan de variant/integer?

Nadat ik een controle heb uitgevoerd krijg ik deze melding: Watch : : ListBox1.List = Sheets("Data").Cells(1).CurrentRegion.Value : <Buiten het geldige bereik> : Variant/Empty : frmInvoer.UserForm_Initialize
en
Watch : : txtlidnr.Text = ListBox1.Value : <Buiten het geldige bereik> : Variant/Empty : frmInvoer.ListBox1_change

en ga zo maar door.
 
Laatst bewerkt:
Als er geen werkblad is met de naam 'Data' gaat het natuurlijk mis.
Als er geen gegevens staan in werkblad 'Data' gaat het natuurlijk mis.
Als er geen userform control is met de naam 'Listbox1' gaat het natuurlijk mis.
Als je geen variabelen declareert en afziet van 'option explicit' leidt de aard van een variabele nooit tot een fout.
 
Laatst bewerkt:
Uiteraard voldoet mijn project aan de eerste 3 voorwaarden :-)
De laatste begrijp ik nu ook.
Ik heb een testbestandje toegevoegd, ook deze geeft bij een controle een fout.

Bekijk bijlage TestbestandV1.xlsx

Het zal waarschijnlijk iets heel ergs doms en simpel zijn, helaas ben ik geen VBA expert.
 
Bedankt snb!
Ik heb m doorgestuurd naar mijn collega zodat hij kan zien of dit bij hem werkt.
 
Het testbestandje werkte!! helemaal top!
Nu ga ik mijn uiterste best doen te zien/leren wat er staat :-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan