• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Foutmelding VBA-code

Status
Niet open voor verdere reacties.

Ben Janssen

Gebruiker
Lid geworden
21 apr 2006
Berichten
16
Hallo!

Wanneer ik een excel bestand open, met daarin verschillende modules VBA, dat krijg ik volgende foutmelding:

Run-time error '1004'
Application-defined or object-defined error

Probleem hierbij is dat ik enkel op 'end' of 'help' kan klikken en dus niet 'debuggen'.

Wat zou er hier aan de hand kunnen zijn?

Ik dacht dat ik ergens een variabele met vaste waarde had ingegeven ergens in de VBA-code, maar ik heb ze helemaal doorzocht en heb niks gevonden.

Is er iemand die dit al aan de hand heeft gehad?

Groeten
Ben
 
Ben,

Ik ga je zeker niet kunnen helpen, maar zonder je code denk ik niemand.
Dus laat je code zien.
 
Dat zou kunnen als er een paswoord op de VBA code zit.
 
Merci voor de reacties.

Er is geen paswoord op de code.

Persoonlijk denk ik dat het weining zin heeft om de code hier neer te schrijven. In totaal zijn het zo een duizend regels en aangezien ik niet kan debuggen kan ik niet enkel het deel met de fout tonen.

Ik vraag dit gewoon voor het geval iemand al was tegengekomen dat er een foutmelding is bij het opstarten terwijl je niet kan debuggen.

Overigens gebruik ik alleen Function en ik geloof niet dat hierbij een grote programmeerachtige fout kan gemaakt worden.

Groeten
Ben
 
Persoonlijk denk ik dat het weining zin heeft om de code hier neer te schrijven. In totaal zijn het zo een duizend regels en aangezien ik niet kan debuggen kan ik niet enkel het deel met de fout tonen.

Zet een paar Msgboxen in de code en zie of die al bereikt worden of niet. Kan je het probleem localiseren.

Overigens gebruik ik alleen Function en ik geloof niet dat hierbij een grote programmeerachtige fout kan gemaakt worden.

En waarom kan je daar geen fouten in maken?
 
Ja de Msgboxen worden bereikt, het programma werkt ook zoals het hoort, maar ik begrijp gewoon niet waarom er dan nog een foutmelding wordt weergegeven bij het opstarten van het programma.

Tis een programma dat verkocht dient te worden en het is nogal vervelend als er een foutmelding komt wanneer je de excelfile opent, ook al werkt het zoals gewenst.:confused:


Misschien is het volgende van belang:
- In excel worden enkele bekomen resultaten terug ingevuld bij het begin van de berekening, waardoor het naar een evenwichtswaarde itereert. Mss ziet hij dit als een circular reference, maar geeft hij dit aan door een foutmelding.
- Omdat er een paar van die zware iteraties inzitten slaagt excel er niet niet om dit bij het openen van het programma te rekenen. Ik los dit op door eerst een vast getal in te vullen in het begin van de berekening en dan de uitkomst hier terug in te vullen waardoor de iteratie kan starten.
Ik heb hiervoor een knop aangemaakt waaraan volgende recorded sub routine aan verbonden is.

Sub Start_iteration()
'
' Start_iteration Macro
' Macro recorded 26/02/2007 by Ben Janssen
'

'
Sheets("Strengen en granulaat").Select
ActiveWindow.ScrollRow = 245
ActiveWindow.ScrollRow = 242
ActiveWindow.ScrollRow = 236

...

ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 1
Range("F5").Select
ActiveCell.FormulaR1C1 = "70"
Range("F14").Select
ActiveCell.FormulaR1C1 = "70"
Range("F5").Select
ActiveCell.FormulaR1C1 = "=(R[251]C)"
Range("F6").Select
ActiveWindow.SmallScroll Down:=-15
Range("F14").Select
ActiveCell.FormulaR1C1 = "=(R[39]C+R[150]C[3])/2"
Range("F15").Select
ActiveWindow.SmallScroll Down:=252
Range("F275").Select
ActiveCell.FormulaR1C1 = "40"
Range("F277").Select
ActiveCell.FormulaR1C1 = "5"
Range("F292").Select
ActiveCell.FormulaR1C1 = "70"
Range("F297").Select
ActiveCell.FormulaR1C1 = "70"
Range("F292").Select
ActiveCell.FormulaR1C1 = "=(R[-48]C+R[90]C)/2"
Range("F293").Select
ActiveWindow.SmallScroll Down:=-9
Range("F297").Select
ActiveCell.FormulaR1C1 = "=(R[28]C+R[97]C)/2"
Range("F298").Select
ActiveWindow.SmallScroll Down:=-9
Sheets("Waterbalans").Select
ActiveWindow.SmallScroll Down:=-21
ActiveWindow.ScrollRow = 98
ActiveWindow.ScrollRow = 97
ActiveWindow.ScrollRow = 94

...

ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 1
Range("G21").Select
ActiveCell.FormulaR1C1 = "70"
Range("G21").Select
ActiveCell.FormulaR1C1 = "=R[360]C"
Range("G22").Select
Sheets("Strengen en granulaat").Select
ActiveWindow.SmallScroll Down:=-30
Range("F275").Select
ActiveCell.FormulaR1C1 = "='Warmteverlies afzuiging goot'!R[-247]C[2]"
Range("F277").Select
ActiveCell.FormulaR1C1 = "=-(Waterbalans!R[-150]C[1]+Waterbalans!R[-140]C[1])"
Range("F278").Select
Sheets("Ingeefwaarden + resultaten").Select
Range("I38").Select
End Sub



Ik weet niet of dit een weg naar de oplossing kan betekenen.

Groeten
Ben
 
Tis een programma dat verkocht dient te worden en het is nogal vervelend als er een foutmelding komt wanneer je de excelfile opent, ook al werkt het zoals gewenst.:confused:

Klein vraagje, Ben, off-topic maar toch: verkoop jij een programma met zulke VBA-code? :shocked: Wist je dat je zelf moet programmeren en dat de Macro recorder slechts stappen opneemt en geen code schrijft? Ik bedoel dus dat dergelijke bovenstaande VEEL beter kan geschreven worden.
 
Beetje offtopic:
Wat ik zo snel zie kan het volgende al korter

Code:
Range("F277") = "5"

ipv

Code:
Range("F277").Select
ActiveCell.FormulaR1C1 = "5"

En al die scrolls kunnen er volgens mij ook wel uit.
Iedere aktie minder scheelt een hoop rekentijd in een document van 1000 regels
en minder code om problemen mee te krijgen :)


(zit bijna aan de 1000 posts :))
 
Laatst bewerkt:
Inderdaad ik wist dat dit korter kan en dat je dit zelf kon programmer, maar aangezien je dan moet terugzien naar welke cel ingevuld moet worden gebruik ik gewoon record.

Deze recorded routine heeft enkel een invul functie, neemt niet deel aan het rekenwerk en heeft aldus geen effect op de rekentijd. De reden van het gebruikt van record is gewoon omdat het minder tijd kost.

Deze routine is uiteraard ook niet ingerekend in de 1000 regels :)

Vraagje, kan het doordat het er een recorded macro is dat er een foutmelding komt? Ik zie niet in waarom, (heb uiteraard al heel wat gerecord in het verleden en nooit problemen mee gehad) maar men weet nooit.

PS: De waarde van het programma hangt in dit geval af van de formules die ik gebruik en minder van de sterke programmeertaal. (ik gebruik dan ook maar sporadisch VB)

Groeten
Ben
 
Inderdaad ik wist dat dit korter kan en dat je dit zelf kon programmer, maar aangezien je dan moet terugzien naar welke cel ingevuld moet worden gebruik ik gewoon record.

Deze recorded routine heeft enkel een invul functie, neemt niet deel aan het rekenwerk en heeft aldus geen effect op de rekentijd. De reden van het gebruikt van record is gewoon omdat het minder tijd kost.

Deze routine is uiteraard ook niet ingerekend in de 1000 regels :)

Vraagje, kan het doordat het er een recorded macro is dat er een foutmelding komt? Ik zie niet in waarom, (heb uiteraard al heel wat gerecord in het verleden en nooit problemen mee gehad) maar men weet nooit.

PS: De waarde van het programma hangt in dit geval af van de formules die ik gebruik en minder van de sterke programmeertaal. (ik gebruik dan ook maar sporadisch VB)

Groeten
Ben

Een programma is een geheel, dat alles moet in orde zijn om van een deftig programma te kunnen spreken. De .Select eruit doen is heel simpel en toch doeltreffend, de ActiveWindow.ScrollRow en ook de ActiveWindow.SmallScroll Down eruit doen moet ook zeker.

De error komt er niet doordat je macro's opgenomen hebt.

Wigi
 
OK, ik zal de raad opvolgen.

Nu zijn we wel wat afgedwaald van de error, maar of dat opgelost zal geraken is maar zeer de vraag.
Kan het echt in dit geval nuttig zijn om heel de code hier neer te plakken?
Nee toch, lijkt mij?

Merci voor de reacties.

Groeten
Ben
 
- Enkel als ik Do-lussen gebruikt heb heb ik variabelen gevarieerd. Wanneer de variabelen vanuit de excelfile meegeven worden dan is dit toch niet nodig, of vergis ik mij.

- Ik heb niks in ThisWorkbook staan. Kan dat of is het dom om te schrijven dat bij mij alle modules onder de map modules staat.
 
gevarieerd moet dus gedefinieerd zijn.

gedeclareerd... :thumb:

Je kan proberen de code hier te zetten, maar aangezien je het verkoopt lijkt me dat niet meteen de beste strategie... ;) Ik vemroed ook dat het bestand te groot is om hier - gezipt - neer te poten?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan