Onbekende fout in bestaand Excel (vba) code

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
947
Beste Helpmijers,

Een tijd geleden heb ik op dit forum een interessant factuurbestand gedownload en heb deze recent op een aantal punten (optisch) gewijzigd. Echter zit er een fout in wanneer ik: een nieuwe factuur wil openen, het factuurnummer wil bijstellen en bij het boeken van de factuur. De eerste twee knoppen staan rechtsboven en de laatste staat rechtsonder. Ik ben van mening dat het om een kleine fout gaat, maar omdat ik te weinig kennis heb van vba kan ik deze fout niet vinden. In ieder geval zit de fout in FactuurNummer1, bijv.:

Input #10, FactuurNummer1

Ik stuur het demo programma mee en hoop dat iemand mij kan helpen deze fout te herstellen.

Alvast heel erg bedankt.
Bekijk bijlage Verkoopfactuur demo.zip
Groeten, Robert
 
Hij kan kennelijk het bestand C:\Users\Robert\Documents\Factuurnummer.txt niet vinden of deze is leeg vanwege de Rem Print #10, FactuurNummer1 in Bewaarfactuurnummer.

Tip:
Je gebruikt het + teken om tekst aan elkaar te plakken.
Wijzig dat in een & teken.
De + is voor rekenkundige bewerkingen.
 
Laatst bewerkt:
Probleem blijft zich voordoen

Ik heb de wijzigingen doorgevoerd, echter geeft nu onderstaande fout

Range("Accept") = ""

Ik heb het volgende pad aangemaakt, maar ook dat werkt niet: C:\Users\Robert\Documents\Factuurnummer.txt
Het is mij overigens ook niet duidelijk hoe het programma erbij komt om dit pad te gebruiken, in werkmap debiteuren staat het pad: C:\gebruikers\verkoopfacturen

Ik hoop dat je de fout kan vinden, het gewijzigde bestand doe ik weer als bijlage.

Alvast weer bedankt.Bekijk bijlage Verkoopfactuur demo (2).zip
 
Het programma komt hierdoor aan dat pad:
Application.DefaultFilePath

Je huidige foutmelding komt omdat het benoemde bereik met de naam Accept verwijderd is:
Clipboard01.jpg
 
Bedankt voor jouw snelle reactie.

Ik ben helaas te onwetend om daar een oplossing voor te vinden, is dat eventueel aan te passen en zo ja, hoe kan ik dat doen
 
Het was een benoemd bereik op het blad Factuur, maar welk bereik dat is geweest en welke inhoud deze dient te hebben kan ik zo ook niet achterhalen. Je zou de regels met Range("Accept") kunnen voorzien van een ' teken (Enkele quote) aan het begin van die regels, dan worden die regels niet uitgevoerd. Vervolgens test je dan of alles werkt zoals je zou willen.
 
Laatst bewerkt:
Nieuwe poging

Na lang het e.e.a. uitgeprobeerd te hebben ben ik ten einde raad maar naar het bronbestand gegaan met de extensie "xls" terwijl ik altijd met xlsm werk.

Dit programma functioneert prima alleen is mijn vraag; kan ik in de codes xls wel veranderen in xlsm?
Kan ik in artikelvoorraadadministratie programma de beveiliging ook omzeilen?
Wanneer ik de factuur op wil slaan moet hij het factuurnummer als bestandsnaam gebruiken, echter maakt dezer er map1 enz. van. Wat is er niet goed aan de code:

'Bestandsnaam voor kopiebestand samenstellen
x1$ = Range("Debiteuren!LocatieFactuurbestanden")
x2 = Range("Factuur!Factuurnr.")
x3$ = "\": If Right$(x1$, 1) = "\" Then x3$ = ""
Bestandsnaam$ = x1$ + x3$ + Trim$(Str$(x2)) + ".xls" 'Naam van het kopiebestand
If x1$ = "" Or x2 < 1 Then Bestandsnaam$ = ""

Wanneer voorgaande is opgelost doet het programma het volgens mij perfect.

De bestanden gaan weer als bijlage.Bekijk bijlage Verkoopfactuur.zipBekijk bijlage Artikelenvoorraadadministratie_vs02(1).zip
 
Ok, pak een bak koffie en zet je schrap :P

Uitleg van het stukje code dat je plaatste.

'Bestandsnaam voor kopiebestand samenstellen
Deze regel: x1$ = Range("Debiteuren!LocatieFactuurbestanden")
zet de waarde van het benoemde bereik LocatieFactuurbestanden in de variabele x1$

Deze regel: x2 = Range("Factuur!Factuurnr.")
zet de waarde van het benoemde bereik Factuurnr. in de variabele x2

Hier wordt bekeken of aan het einde van x1$ een \ teken staat. (Beetje erg omslachtig, maar goed)
Zoniet, dan wordt deze toegevoegd
x3$ = "\": If Right$(x1$, 1) = "\" Then x3$ = ""

Hier worden de naam en de lokatie van het bestand bepaald:
Bestandsnaam$ = x1$ + x3$ + Trim$(Str$(x2)) + ".xls" 'Naam van het kopiebestand

Als x1$ leeg is of x2 < 1 dan wordt de Bestandnaam$ leeg gemaakt.
If x1$ = "" Or x2 < 1 Then Bestandsnaam$ = ""

Bij mij komt er dit uit:
C:\Users\Ed\Documents\Verkoopfacturen\1.xls

Als je in Office 2007 of hoger dat .xls bestand via "Opslaan als" eerst opslaat als .xlsm bestand kan je zonder problemen die .xls in .xlsm wijzigen. Tevens ben je dan af van de beperkingen die Office 2003 had t.o.v. Office 2007 en hoger.

Bij deze de complete set van benoemde bereiken zoals deze in het .xls document aanwezig zijn:
CTRL-F3.jpg

Dat lijstje kan je zelf tevoorschijn halen met de toetscombinatie CTRL-F3.
Tot zover.


Tevens bij deze het bestand Artikelenvoorraadadministratie_vs02(1).xls zonder wachtwoord op het VBA project:
Bekijk bijlage Artikelenvoorraadadministratie_vs02(1).xls
Met dank aan Harry Potter :D
 
Laatst bewerkt:
super bedankt

Heel erg bedankt voor het vele werk en ben jou daar echt heel erg dankbaar voor.

Ik kwam er gisteren helaas niet aan toe om hier mee verder te gaan, maar wil jou toch eerst bedanken alvorens ik er vanavond en morgen mee verder ga. Mocht ik nog vragen hebben - en dat zal ongetwijfeld - neem ik weer contact op.

Nogmaals super bedankt
 
Graag gedaan Robert. En als er vragen zijn dan zien we je hier wel terug :)
 
Daar ben ik weer

Beste Ed,

Ik ben inmiddels de hele dag bezig geweest met beide programma's (zie bijlagen) en heb inmiddels wijzigingen aangebracht, echter een aantal werken niet en wel de volgenden:

1. Het factuurprogramma heb ik omgezet van .xls naar .xlsm. Het enige dat niet werkt is het opslaan van de kopie onder het factuurnummer, hetgeen in de
.xls versie wel werkte. Ik heb hier nog een klein verzoek bij: kan naast het factuurnummer ook de naam van de firma erbij gezet worden?

Het artikelvoorraadprogramma heb ik ook gewijzigd in .xlsm en verder heb ik een nog paar wijzigingen aangebracht echter lukt mij dat niet met de volgende:
2. Wanneer ik het gezochte artikel handmatig invoer om te zoeken wil ik graag dat hij met een voorstel komt naarmate ik meer letters in toets
(Afterupdate()).
3. Ik zou ook graag op het artikelnummer van de leverancier willen kunnen zoeken.
4. Wanneer ik het artikel heb gevonden wil ik dat de cursor naar "aantal verkocht"
5. Als ik de voorraad bij- of afboek verrekend het programma prima het aantal van de (totaal)voorraad.
Kan dat ook voor de kolommen (Totaal uitgegeven "K" en Totaal ontvangen "L")
en wanneer de voorraad onder een minimum bestelniveau komt dat deze kolom M (Nog te bestellen) aanvult tot aan de maximum voorraad?
6. Welk deel van de codes is verantwoordelijk vanuit het artikelvoorraadadministratie die de gegevens op de eerst volgende lege regel plaatst
in de verkoopfactuur?

Omdat ik heel graag wil leren hoe de codes in VBA werken, zou het heel fijn zijn dat ik per proces weet waar de codes voor verantwoordelijk zijn, vooral boven de processen waar jij (als ik jou niet teveel vraag) aanpassingen voor verricht.

Alvast weer heel erg bedankt en een fijn weekend.

Groeten, Robert
Bekijk bijlage Verkoopfactuur.zipBekijk bijlage Artikelenvoorraadadministratie.xlsm
 
Hoi Robert.
Punt 1. Dat kan alleen als er een relatie is tussen het factuurnummer en het bedrijf en die is er volgens mij niet.
Punt 2. Dat is allemaal mogelijk maar naar mijn mening teveel werk voor een forumvraag omdat daar echt nogal wat tijd in gaat zitten.
Dat is meer iets voor een consultant. Dat doe ik ook voor klanten, maar uiteraard niet gratis.

Wat het op die manier zoeken betreft, dat is al eens vaker aan de orde geweest.
Als je een nieuwe vraag stelt over het zoeken van informatie via een combobox waarbij het resultaat direct wordt getoond is er vast wel iemand die daar al wat voor heeft gemaakt en erop zal antwoorden.
 
Graag gebruik maken van jouw diensten

Hallo Ed,

Ik denk dat ik graag van jouw betaalde diensten gebruik wil maken. Wat reken jij per uur of werk jij op een andere basis.

Graag hoor ik van jou.

M.vr.gr.
Robert Smidt
 
Hallo Robert,

Het is niet mijn bedoeling hier iets anders dan blije gezichten te verdienen dus op die basis zal ik dat hier niet aanbieden, zo was m'n opmerking niet bedoeld.
Daarnaast is het, als ik het zakelijk zou doen, per uur niet echt goedkoop te noemen en alleen voor klanten die al met onze software werken.

Kennelijk is het wel belangrijk voor je om e.e.a. volgens wens in orde te krijgen.
Hoeveel haast heb je er mee?
 
Hallo Ed,

Ik heb niet zoveel haast maar het zou fijn zijn dat het programma dat ik voor ogen heb binnen een redelijk termijn gereed is. Mijn uitgangspunt is dat ik het zelf wil kunnen maken en onderhouden, echter over te weinig kennis beschik.

Ondanks dat ik zeer tevreden ben hoe snel ik hier een goed antwoord krijg, kost het toch veel tijd omdat ik veel vragen heb en soms de ene vraag een nieuwe vraag oproept. Wellicht is het handig dat ik zelf verder ga met bouwen met iemand op de achtergrond die op de hoogte is waar ik mee bezig ben en daardoor snel antwoord kan geven. Wanneer ik hier een vraag uitzet, moet ik per vraag vaak veel informatie geven omdat degene niet op de hoogte is van het eindproduct.

Mocht je iets kunnen en mogen betekenen, dan hoor ik dat graag.

Groeten, Robert
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan