Toon posts:

[Excel 2003] Probleem VBA door verandering taalversie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal,

Zojuist ben ik er achter gekomen dat nadat de computer is geupdate naar de Engelse versie mijn excel werkblad met macro's niet meer werkt. Het probleem is dat ik macro's heb aangemaakt met het woord "Knop".
ActiveSheet.Shapes("Knop 7").Select
Nu krijg ik iedere keer een foutmelding. Als ik met zoeken & vervangen alles verander in Button. Dan doet hij het weer. Dit is voor toekomstige documenten okay.

Echter de oude Excel documenten hebben allemaal nog "Knop" er in staan. En de macro doet het dan ook niet.
Na wat te hebben rond ge'google'd ben ik er toch niet uitgekomen. Vandaar dat ik hier mijn probeem uitleg. Ik wist niet dat VBA zich zo vast legt en dat met een taalversie wijziging de macro niet meer functioneert.

Is er iemand die een oplossing heeft?


Groetjes Anna

  • onkl
  • Registratie: Oktober 2002
  • Nu online
Bedoel je dat je dezelfde macro gebruikt voor oude en nieuwe documenten?
Dan zou je iets kunnen proberen als (nep-code)
code:
1
2
3
4
5
6
7
knopnaam as string
if bestaat(ActiveSheet.Shapes("Knop 7")) then
knopnaam = "Knop7"
else
knopnaam = "Button7"
End if
ActiveSheet.Shapes(knopnaam).select

De "bestaat" routine kan je dan in een aparte sub afwerken, met behulp van een on error routine.

Verwijderd

Topicstarter
Het gaat om een prijscalculatieprogramma. Voor nieuwe calculaties is het geen probleem. Ik heb de macro al aangepast. Maar voor oude calculaties, gebruikt hij de oude macro's.
Als ik dan een oud bestand open, dan wordt automatisch de oude macro gebruikt (en werkt het niet).
Dus dan zou ik nog steeds die (nep) code in ieder (oud) bestand moeten kopieren. Of begrijp ik je oplossing niet goed.

En de zin:
De "bestaat" routine kan je dan in een aparte sub afwerken, met behulp van een on error routine.
Komt niet aan bij mij. |:( Geen idee wat je bedoelt. Dat je een nieuwe sub moet maken en daarin die code moet plakken?

  • onkl
  • Registratie: Oktober 2002
  • Nu online
Er zit -begrijp ik- macrocode in een hele serie bestanden. Als je zo'n bestand opent, worden de knoppen hernoemd naar "Button", waardoor de macrocode niet meer werkt.

In dat geval zit er inderdaad niets anders op dan de macro's in alle oude bestanden aan te passen. Dat kan programmatisch, via VBE, maar ik zou het de beginnende gebruiker niet aanraden.

@"bestaat" routine:
Een nieuwe sub (eigenlijk function) inderdaad, waarvan ik de code niet gaf. dat kan zoiets zijn als:
Visual Basic:
1
2
3
4
5
6
7
8
 Function bestaat (Byval naam as string) as Boolean
On error goto fout
bestaat= True
ActiveSheet.Shapes(naam).Select
exit function
fout:
bestaat=False
End Function

(ja, ja, ik weet het, dit is hatseflatscode, maar het werkt en geeft het mechanisme goed weer)
Zo'n functie kan je aanroepen met de opdracht
bestaat("Knop7") (bijvoorbeeld: if bestaat("Knop7") then....)
en geeft True of False terug.

(Tip: houdt er iig. in je nieuwe code rekening mee dat de code zowel met "knop" als met "button" om kan gaan)

[ Voor 4% gewijzigd door onkl op 30-05-2007 16:47 ]


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 09-07 19:01
Je kunt de knoppen voortaan ook op het werkblad zelf plaatsen in plaats van in een dialoogkader. Dan bepaal je zelf de naam.

Verwijderd

Topicstarter
Bedankt voor de reacties. :D Beetje late reply van mij, was er ff tussenuit.
Ik denk dat als er een oud bestand wordt geopend, dat ik dan de nederlandse woorden vervang door de engelse. De oude bestanden worden niet dagelijks gebruikt (meer ter back up) en verwacht niet dat er nog terug wordt gegaan naar de Nederlands versie.
En de opmerking om zelf de knoppen voortaan op het werkblad te plaatsen. Daar ga ik eens mee puzzelen. Klinkt idd wel handig!
Pagina: 1