Opgelost problemen met code

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

ronhei

Nieuwe gebruiker
Lid geworden
21 feb 2024
Berichten
2
Hallo allemaal
Ik ben niet zo goed met vba en heb een probleem
In bijlage alvast het stukje code
De code gaat een volgende lijn in de sheet aanvullen met gegevens die zijn ingevuld in de textboxen van een userform
Dit gaat perfect alleen na x-aantal keer na elkaar geeft hij error terug
Namelijk Methode Value van object Range is mislukt
Soms gaat het 2 x na elkaar goed en soms 4 of 5 maar komt steeds met die error
Kan iemand helpen aub
 

Bijlagen

Problemen met het niet uploaden van een voorbeeld Excelbestand.
 
De fout duidt op een value fout, een verkeerde waarde dan verwacht wordt dus.
Controleer de sheet op lege cellen die in de verwerking voor komen. Een lege cel genereert een fout indien er een numerieke waarde verwacht wordt.
Je kan in zo'n geval proberen om de fout op te vangen door extra controles op de cellen bij het inlezen of door een 'on error' te voorzien in je code die dan bij een fout naar een bepaalde plek in je code springt waar je aangeeft dat er iets mis is met de gegevens in cel zus en zo.
Daarna kan je kiezen om gewoon verder te gaan of de bewerking te stoppen.
 
er moeten in ieder geval aanhalingstekens rond die A en B staan, als je dat stukje code gebruikt
sel.Cells(selRow, "A").Value

Bovendien zou je met een msgbox of met Debug.print in het "direct" venster telkens de waarde kunnen checken, als het tig keer goed gaat en de dan weer een keertje niet dan zal daar misschien iets geks mee gebeuren. (1 van beiden)
CSS:
 selrow = sel.Cells(sel.Rows.Count, "A").End(xlUp).Row + 1
     Debug.Print selrow 'dit checken in het direct-venster (CTRL+G)
     MsgBox selrow
     If (frmLeerling.txtNaam.Value <> "") And (frmLeerling.txtKlas.Value <> "") Then
 
Laatst bewerkt:
dank jullie voor de tips
blijkt dit een probleem te zijn dat zich voordoet sinds excel versie 2010 en later
1 op 10 tabellen kunnen dit probleem vertonen
het gaat paar keer goed door de code en dan plots komt hij met de error af
sheet verwijderd en opnieuw aangemaakt en code loopt als een trein erdoor heen
 
grappig, ik werk met excel365 en tientallen tabellen, nooit van gehoord.
 
blijkt dit een probleem te zijn dat zich voordoet sinds excel versie 2010 en later
1 op 10 tabellen kunnen dit probleem vertonen
het gaat paar keer goed door de code en dan plots komt hij met de error af
sheet verwijderd en opnieuw aangemaakt en code loopt als een trein erdoor heen
Komt mij niet onbekend voor.
 
Even over het concept:

Waarom vraag je aan een gebruiker, die op een 'opslaan' knop klikt of hij/zij gegevens wil opslaan ?

Waarom kan een gebruiker op een 'opslaan' knop klikken als een werkblad waarin die gegevens moeten worden opgeslagen afwezig is ?

Waarom kan een gebruiker op een 'opslaan' knop klikken als gegevens van een leerling en een klas ontbreken ?

Zorg ervoor dat de knop 'opslaan' pas zichtbaar/klikbaar is als aan alle voorwaarden (werkblad, leerlinggegevens, klasgegevens) is voldaan.

Het lijkt me dat het aantal klassen vooraf bepaald is; dan is een dropdownlist in een combobox, of een listbox veel minder foutgevoelig dan het invoeren van gegevens in een tekstvak.

Over de code:

Omdat het Userform zich waarschijnlijk in het aktieve bestand bevindt is de referentie van het werkblad overbodig.

rows.count is een constante (2^20); een referentie naar een werkblad is zinloos/overbodig.
Vermijd overbodige objectvariabelen.

De enige code die je bij de knop nodig hebt is
CSS:
Private Sub cmdSaveLeerling_Click()
  sheets("Lln").cells(rows.count,1).End(xlup).offset(1).resize(,2)=array(txtNaam,txtKlas)
End Sub
 
Laatst bewerkt:
Komt mij niet onbekend voor.
ik kan even niet volgen, heb je het dan over toevoegen aan tabellen of onderaan bijschrijven van een gewoon bereik ?
In het text-bestandje met de code was er overigens geen sprake van en tabel meen ik me te herinneren. In het andere geval voeg je dat ook anders/handiger toe ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan