• 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 berekening visual basic (Hans123?)

  • Onderwerp starter Onderwerp starter emc
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

emc

Gebruiker
Lid geworden
21 jan 2003
Berichten
450
Bij een zelfgemaakte factuur krijg ik bij het opslaan (via macro) een foutmelding. de volgende tekst is in vb geel gemarkeerd:

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Ik heb enige aanpassingen gedaan, maar kan dit niet herleiden, wie weet wat dit betekent?

Alvast bedankt, emc.
 
emc,

Verander dit:

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

in:

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
 
Hallo emc,

Kun je ook aangeven wat de foutmelding is ?
Een mogelijke oorzaak is dat de grootte van de selectie op je klembord niet overeenkomt met de grootte van het bereik waar je naartoe kopieert.
 
Hoi Hans,

Dank voor je reactie! Inmiddels ben ik er achter dat het met het beveiligen van het invoerblad te maken heeft. Ik ga het weekend even puzzelen welke. Als ik er niet uit kom hoor je mij nog.

Vast fijn weekend, emc.
 
Vervolg voor Hans123

Hoi Hans,

Ik heb een poosje zitten puzzelen, maar kan het niet vinden. Het invoerblad niet beveiligen is denk ik de beste optie. Ook als ik maar 1 kolom beveilig krijg ik foutmelding 1004 (cel of grafiek is beveiligd.....) Als je een andere oplossing weet is dat mooi, maar het is niet van essentieel belang.

Wel heb ik nog een andere vraag:
Bij het opslaan wordt de klantnaam niet meegenomen. Het is de bedoeling dat het bestand alsvolgt wordt opgeslagen: jaarmaand - factuurnummer - klantnaam. Sinds ik het invoerblad heb gewijzigd wordt het bestand opgeslagen met: jaarmaand - factuurnummer - 0. In het moduleblad heb ik volgens mij alle celverwijzigingen goed aangepast, kan het verder nog ergens aan liggen? Hierbij een kopie van de tekst in de module:

Sub opslaan()
dit_werkblad = ActiveWorkbook.Name

pad = Sheets(1).Range("A24").Value
If Right(pad, 1) <> "\" Then pad = pad & "\"
Jaar = Sheets(1).Range("A26").Value
maand = Sheets(1).Range("A28").Value
If maand < 10 Then maand = "0" & maand
factuurnummer = Sheets(1).Range("A30").Value



klant = Cells(2, 2).Value

bestand = pad & Jaar & maand & " - " & factuurnummer & " - " & klant
bericht = "Bestand wordt opgeslagen als:" & Chr(10) & bestand & Chr(10) & "Is dit correct ?"
naam_ok = MsgBox(bericht, vbYesNo)

If naam_ok = vbYes Then
Sheets(Array("Invoerblad", "Winkelier", "Bedrijven", "Factuur", "Factuur met korting")).Copy
Sheets(Array("Invoerblad", "Winkelier", "Bedrijven", "Factuur", "Factuur met korting")).Select
Sheets("Invoerblad").Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
Sheets("Invoerblad").Select
ActiveWorkbook.SaveAs Filename:=bestand
ActiveWorkbook.Close


'hier wordt een tekst bestand gemaakt (als hij niet bestaat) met naam laatste_factuur.txt om laatste nummer in op te slaan
lastfac = Dir(pad & "laatste_factuur.txt")
If lastfac = "" Then
CreateObject("Scripting.FileSystemObject").CreateTextFile pad & "laatste_factuur.txt"
End If

'hier wordt in het textbestand het laatst opgeslagen factuurnummer gezet
Open pad & "laatste_factuur.txt" For Output As #1
Write #1, CInt(factuurnummer)
Close #1




factuurnummer = CInt(factuurnummer) + 1
If factuurnummer < 10 Then
factuurnummer = "000" & factuurnummer
ElseIf factuurnummer < 100 Then
factuurnummer = "00" & factuurnummer
ElseIf factuurnummer < 1000 Then
factuurnummer = "0" & factuurnummer
End If

Sheets(1).Range("A30").Value = factuurnummer

End If





End Sub

Sub auto_open()


pad = Sheets(1).Range("A24").Value
If Right(pad, 1) <> "\" Then pad = pad & "\"

lastfac = Dir(pad & "laatste_factuur.txt")

If lastfac = "" Then
' geen tekstbestand gevonden, nummer 1 wordt gebruikt
factuurnummer = 0
Else
Open pad & "laatste_factuur.txt" For Input As #1
Line Input #1, factuurnummer
Close #1

End If
factuurnummer = CInt(factuurnummer) + 1
If factuurnummer < 10 Then
factuurnummer = "000" & factuurnummer
ElseIf factuurnummer < 100 Then
factuurnummer = "00" & factuurnummer
ElseIf factuurnummer < 1000 Then
factuurnummer = "0" & factuurnummer
End If

Sheets(1).Range("A30").Value = factuurnummer

End Sub


Alvast bedankt, emc
 
Hoi Hans,

Ik heb even verder zitten puzzeleln en merk dat er een verwijzing blijft staan naar cel B2 waar de debiteurnaam voorheen in stond. In VB kan ik deze verwijzing niet meer vinden, ik denk dat het te maken heeft met de volgende zin:

bestand = pad & Jaar & maand & " - " & factuurnummer & " - " & klant

Ik kan alleen nergens de verwijzing voor klant vinden, de andere items staan immers in dit rijtje genoemd:
pad = Sheets(1).Range("A24").Value
If Right(pad, 1) <> "\" Then pad = pad & "\"
Jaar = Sheets(1).Range("A26").Value
maand = Sheets(1).Range("A28").Value
If maand < 10 Then maand = "0" & maand
factuurnummer = Sheets(1).Range("A30").Value

Ik heb geprobeerd of het toevoegen van deze regel hielp:
klant = Sheets(1).range("A5").Value
maar dat is niet zo.

Wat ik ook zie is dat het invoerblad in VB nu als blad 2 genummerd staat, is het mogelijk om deze nummering te wijzigen?

Alvast bedankt, emc
 
In de macro staat ergens klant = cells(2,2).value, dit is de verwijzing naar je klant.
dit kun je beter vervangen door : klant= sheets("blad naam").range("A5").value
waar "blad naam" uiteraard de naam is van jouw werkblad.

Dit is wat makkelijker te lezen. Dat het werkblad blad2 heet is niet erg, met sheet(1) verwijs je naar het blad dat als eerste is je bestand staat.
 
Hoi Hans,

Er vandaag pas kans toe gekregen jou oplossing te verwerken en het werkt prima! Bedankt. Het volgende probleempje meldt zich echter aan. Ik heb 2 tabbladen toegevoegd. Heb bedacht dat als i kde bestelfaxen toevoeg en ook aan de gegevens in het invoerblad koppel heb ik nog meer rendement :-).

Maar dan is het ook handig als deze mee opgeslagen worden. Dit heb ik geprobeerd door deze tekst:
Sheets(Array("Invoerblad", "Winkelier", "Bedrijven", "Factuur", "Factuur met korting")).Copy
Sheets(Array("Invoerblad", "Winkelier", "Bedrijven", "Factuur", "Factuur met korting")).Select

te veranderen in dit:
Sheets(Array("Invoerblad", "Winkelier", "Bedrijven", "Factuur", "Factuur met korting", "Fax ABZ", "Fax Verosol", Fax Buitelaar")).Copy
Sheets(Array("Invoerblad", "Winkelier", "Bedrijven", "Factuur", "Factuur met korting", "Fax ABZ", "Fax Verosol", Fax Buitelaar")).Select

Dan krijg ik echter foutmelding nr 1. uit bijgaand bestandje. Wanneer ik, eigenwijs toch opsla en de factuur vervolgens via de button wil opslaan krijg ik foutmelding nr 2. Het probleem zit 'm in de laatste fax (fax buitelaar). Als ik deze uit de regel verwijder werkt het wel. Kan echter geen spellingsfout ontdekken, dus hoop weer op jou kunde.

Alvast bedankt, emc
 

Bijlagen

Als ik heel snel kijk ben je een aanhalingsteken voor Fax Buitelaar vergeten.
 
oei, nou voel ik me wel heel erg blond..... bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan