VBA error bij overschrijden maximum aantal shapes op sheet

Status
Niet open voor verdere reacties.

Jan52

Gebruiker
Lid geworden
15 nov 2007
Berichten
5
In Excel heb ik een macro geschreven die een schema tekent op een worksheet. De code tekent het schema dat bestaat uit textboxes, circles en lines. Met commandbuttons kan de sheet worden gewist en het schema opnieuw worden getekend (met andere tekst in de textboxes). In de bijlage is een voorbeeld van een schema te zien.
VBA kent iedere shape een index nummer toe en met het wissen en opnieuw tekenen worden die nummers steeds groter. Het probleem is nu dat het programma vastloopt zodra het maximum aantal van 65535? wordt overschreden.
Hoe kan men de shape index numbers resetten naar nul of is er een andere oplossing?
 

Bijlagen

als je zoveel shapes moet tekenen is het misschien beter om eens te kijken naar Visio.[edit] en Access[/edit]
 
Laatst bewerkt:
Het aantal shapes is maximaal ca 100 of 200 als ik het diagram laat tekenen.

In dezelfde workmap is er een berekening aan gekoppeld. Tijdens een sessie kan bijvoorbeeld 20 keer de bereking gemaakt worden en dus ook 20 keer het diagram gewist en getekend.
Maar ik gebruik dit excel programma al jaren. En nu blijkt dat door het steeds opnieuw wissen en opnieuw tekenen het maximaal mogelijke door excel te gebruiken shapes is overschreden.
 
Misschien is er een mogelijkheid om dit in de code zelf te doen (dat weet ik niet, waar we kunnen proberen). Kan je evt. een Excelbestandje (gezipt) hier plaatsen met de VBA-code die je gebruikt?

Wigi
 
zie de bijlage "module schematekenen"
Op de worksheet worden lines, ovals en textboxes getekend
bijvoorbeeld met "ActiveSheet.TextBoxes.Add".
Het indexnummer zelf van de shapes wordt niet gebruikt in de code.
 

Bijlagen

shape index nummer - een bug in excel2003?

Hetzelfde probleem nu anders geformuleerd:

probeer het volgende
open een nieuwe werkmap
plaats een aantal tekstvakken
onthoud het indexnummer van het laatste tekstvak
wis alle tekstvakken
sla de map op en sluit Excel af
open de map weer
en plaats een tekstvak
het indexnummer is dan 1 zoals men zal verwachten.
Want Excel begint gewoon opnieuw te nummeren.

Maar voeg nu een aantal nieuwe werkbladen toe
en voer dezelfde acties uit dus plaats op het nieuwe werkblad een paar tekstvakken en wis deze weer.
Als je afsluit en weer opnieuw opent en dan opnieuw een tekstvak plaatst
dan blijkt het index nummer niet 1 te zijn!!!!!
maar is 1 hoger dan het aantal eerder geplaatst tekstvakken!!!
excel onthoudt nu volkomen onnodig het totaal aantal eerder geplaatste tekstvakken (op alle werkbladen)
dit blijkt voor meer shapes zo te zijn: geldt ook voor lijnen, circles enz
Wat is hier aan de hand en is dit op te lossen?
 
Dit probleem is volgens mij eigenlijk een excel probleem, dus niet VBA:

shape index nummer - een bug in excel2003?

zie de onderstaande beschrijving.
Hetzelfde probleem nu anders geformuleerd:

probeer het volgende
open een nieuwe werkmap
plaats een aantal tekstvakken
onthoud het indexnummer van het laatste tekstvak
wis alle tekstvakken
sla de map op en sluit Excel af
open de map weer
en plaats een tekstvak
het indexnummer is dan 1 zoals men zal verwachten.
Want Excel begint gewoon opnieuw te nummeren.

Maar voeg nu een aantal nieuwe werkbladen toe
en voer dezelfde acties uit dus plaats op het nieuwe werkblad een paar tekstvakken en wis deze weer.
Als je afsluit en weer opnieuw opent en dan opnieuw een tekstvak plaatst
dan blijkt het index nummer niet 1 te zijn!!!!!
maar is 1 hoger dan het aantal eerder geplaatst tekstvakken!!!
excel onthoudt nu volkomen onnodig het totaal aantal eerder geplaatste tekstvakken (op alle werkbladen)
dit blijkt voor meer shapes zo te zijn: geldt ook voor lijnen, circles enz
Wat is hier aan de hand en is dit op te lossen?

shape index nummer - een bug in excel2003?
 
Plaats eens een (gezipt) Excel-bestandje (geen pdf-plaatje).
Het indexnummer zelf van de shapes wordt niet gebruikt in de code.
Jij gebruikt het indexnummer niet, maar Excel op de achtergrond wel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan