VBA procedure loopt fout als andere excelsheet is geopend.

Status
Niet open voor verdere reacties.

tarquin7

Nieuwe gebruiker
Lid geworden
8 dec 2019
Berichten
4
Hallo,

In mijn eerste VBA programma loop ik vast als ik het draai terwijl er ook nog een willekeurig andere excelsheet open is. Zonder andere excelsheet geopend loopt het prima.

Ergens moet er een combobox cboType gemaakt worden, gebaseerd op de selectie uit combobox cboMerk.

De regel
Code:
[BAData!U4] = cboMerk.Value

Crasht dan met error 424 Object required. Ik vermoed dus dat de procedure de andere excelsheet probeert te gebruiken om te schrijven en/of lezen.

Als ik die regel aanpas:
Code:
ws.range(“U4”) = cboMerk.Value

dan wordt de juiste cell U4 beschreven, maar dan crasht de volgende regel:
Code:
If cboMerk.ListIndex > -1 Then cboType.List = Split(lijst(Filter([transpose(if(BAData!A2:A1000=BAData!U4,BAData!B2:B1000,"#"))], "#", False)), ",")
met error 13, Type mismatch. De Split regel is moeilijk te debuggen.

ws is overigens gedefinieerd als:
Code:
Set wb = Workbooks("boot-aanvragen.xlsm")
Set ws = wb.Worksheets("BAData")

Ik moet dus zorgen dat de VBA procedure nergens naar een ander workbook lonkt. Iemand een idee waar ik de fout in ga?

Dank alvast.
 

Bijlagen

Handig, zo'n document waar alles verborgen is en we dus helemaal niets kunnen zien.
 
Hi Edmoor.

Dit is mijn eerste post op dit forum dus wellicht heb ik iets niet goed gedaan. Ik kan het attachment normaal openen dus waar loop je tegenaan wat verborgen zou zijn?
 
Alleen de userform wordt getoond.
Bij sluiten is alles weer weg.
 
Het lijkt erop dat je dan specifieker moet zijn bij het gebruik van een cel of een range.
Due niet [BAData!U4] maar wb.Sheets("BAData").Range("U4").
En niet ws.range("U4") maar wb.ws.range("U4").
 
Dank, maar dit lost het maar gedeeltelijk op. (wb.ws.range("U4") werkt niet omdat ws definitie al de wb definitie bevat).

Is heb even een msgbox tussen gevoegd waarbij de activeworkbook.name en thisworkbook.name worden getoond.
Bij de eerste selectie van een item uit cboMErk gaat dat goed, beide items tonen de naam van de correcte worksheet.
Echter als ik een ander item uit cboMErk selecteer is activeworkbook.name veranderd in de naam van een andere excelsheet die dan ook open is en niets met deze VBA procedure te maken heeft. Daarna krijg ik dan de eerder genoemde foutmelding. Ik kan niet vinden wanneer en waarom het activeworkbook switcht naar een andere excelsheet of hoe ik dit moet voorkomen.

Ik heb inmiddels wel gevonden dat het fenomeen niet meer optreedt als is de userform niet meer Modeless opstart. Echter: Ik wil dat de gebruiker ook andere excelsheets kan raadplegen terwijl deze userform actief is.

Dus toch iets verder gekomen, maar ben er nog niet.

Dank zover.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan