Cellen leegmaken, maar niet de formules wissen

Status
Niet open voor verdere reacties.

Liesjes001

Gebruiker
Lid geworden
11 jun 2014
Berichten
82
Beste VBA'ers...

via een VBA module heb ik een poging gedaan om de cellen in Excel blanco te maken. Maar als ik deze formule gebruik, dan worden de formules die erin stonden ook gewist. Kan ik deze formule aanpassen om ervoor te zorgen dat de formules blijven staan? Zo ja, hoe kan ik dat dan best doen?


x.Sheets("VERHUURDOCUMENT").Range("B13").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("B14").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("B15").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("B16").Value = ""

Mvg

Lies
 
Kort. Neen, leeg is leeg.
Wat je wel kan doen is je formule zo ombouwen zodat bij geen resultaat (via de formule) de cel leeg blijft (lijkt).
 
En hoe bouw ik die formule dan best om? Het gaat over bv. een som van twee getallen...de formule wordt nu telkens mee gewist en dat vind ik niet zo fijn.
 
Plaats eens een voorbeeldbestand met je formules in want zo is het ook maar gokken.
 
Welke code gebruik je om de cellen te wissen ?
Als het gaat om de formules op 0 te krijgen hoef je toch enkel maar de broncellen (E27 en E28) te wissen.
Dus momenteel begrijp ik nog niet goed waar je eigenlijk heen wil.
 
Beste warme bakkertje

eerst en vooral een bedanking.

In VBA zijn twee modules uitgeschreven die ervoor zorgen dat de gegevens van werkblad 1 worden overgeschreven in werkblad 2, tegelijkertijd worden de gegevens in werkblad 1 gewist. Als je op de knop "Copy values to overzicht" klikt, dan worden de gegevens overgescherven, de formule "=E27*$F$26*2" in cel G27 blijft staan, maar de formule in cel G28 die verdwijnt, en dat is dus niet de bedoeling.

Als bijlage stuur ik je het document met de uitgeschreven modules.

Mvg

LiesBekijk bijlage Help mij, formules niet wissen.xlsm
 
Ik snap inderdaad wat je bedoelt, als ik de cellen E27 en E28 zou laten wissen, dan komt het resultaat inderdaad terug op nul. Nu heb ik geprobeerd om het aan te passen, maar ik snap niet goed wat ik fout doe.

Ik stuur je even de code die ik noteerde:

'Empty values
x.Sheets("VERHUURDOCUMENT").Range("B13").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("B14").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("B15").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("B16").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("F18").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("F19").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("F22").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("F23").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("C34").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("C33").Value = "" 'extra
x.Sheets("VERHUURDOCUMENT").Range("G18").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("G19").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("G22").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("G23").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("E27").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("E28").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("C31").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("C32").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("C24").Value = ""
x.Sheets("VERHUURDOCUMENT").Range("C25").Value = ""

Maar nog steeds wordt het niet juist uitgevoerd als ik de knop probeer te gebruiken. Ik sla het op in VBA, ik sla het document op, maar nog steeds doe ik nog iets mis...maar wat??
 
Code:
x.Sheets("VERHUURDOCUMENT").Range("G28").Value = ""

Deze regel heb ik uit jouw voorbeeldbestand gehaald. Klein beetje logisch dat dan de formule verwijderd wordt, niet?:o

Voor de rest kan je code wel beter, maar heb nu even geen tijd meer. Zal straks even terug oppikken (of iemand anders).
 
Code:
Sub copy_ws()

    'Create array with all values
    With Sheets("VERHUURDOCUMENT")
        myArray = Array(.Range("J1"), .Range("B13"), .Range("B14"), .Range("B15"), .Range("B16"), IIf(.Range("F18") <> vbNullString, .Range("F18"), _
            .Range("F19")), IIf(.Range("F22") <> vbNullString, .Range("F22"), .Range("F23")), .Range("C34"), .Range("G28"), .Range("C33"))
        'Copy values to Overzicht verhuring
        Sheets("OVERZICHT VERHURING").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 10) = myArray
        'Clear all values from Verhuurdocument
        .Range("B13:H16,F18:F19,F22:F23,C24:H25,E27:E28,C34").ClearContents
    End With
    'Display msgbox to inform user
    MsgBox "Values copied!", vbInformation, "Hoi Lies waar is da feesje? ;)"

End Sub
Sub Button10_Click()

    Dim path As String
    path = CreateObject("WScript.Shell").specialfolders("Desktop") & "\Calendars " & Replace(Replace(Now(), ":", "."), "/", ".")
    MkDir path
    Call Shell("explorer.exe" & " " & path, vbNormalFocus)
    Sheets("VERHUURDOCUMENT").Copy
    With ActiveWorkbook
        .SaveAs path & "\" & "VERHUURDOCUMENT", 51
        .Close True
    End With

End Sub
 
Laatst bewerkt:
Wist je dat ?

Code:
Range("B13:H16,F18:F19,F22:F23,C24:H25,E27:E28,C34").ClearContents

in plaats van

Code:
Application.Union(.Range("B13:H13"), .Range("B14:H14"), .Range("B15:H15"), .Range("B16:H16"), .Range("F18"), .Range("F19"), _
            .Range("F22"), .Range("F23"), .Range("C24:H24"), .Range("C25:H25"), .Range("E27"), .Range("E28"), .Range("C34")).ClearContents

Zin & noodzaak van het aktiveren van de verkenner ontgaan me bovendien.
 
Laatst bewerkt:
@ snb

Aanpassing in macro doorgevoerd.

Wat betreft openen verkenner zal TS er zijn redenen wel voor hebben zeker ???
 
Die redenen zouden zomaar onervarenheid kunnen blijken te zijn.
 
Beste snb en warme bakkertje

er is inderdaad een reden voor. En onervarenheid is er daar 1 van ;-)

Ik probeer om de macro zo snel mogelijk uit te proberen en dan hou ik jullie op de hoogte.

Mvg

Lies
 
Beste Warme Bakkertje en SNB (sorry dat ik zo lang op me liet wachten)
Beste VBA'ers

zoals sommigen reeds begrepen hadden, ben ik geen groot licht op vlak van VBA, maar ik hoop door er veel mee te werken (en vooral veel te vallen en weer op te staan) en hulp te vragen dat ik het zal leren. Ik heb de tips die warme bakkertje en snb me gaven proberen toe te passen, maar ik geraak er (nog) niet uit.

Als bijlage stuur ik jullie het voorbeeldje, zodat het duidelijker wordt waarvoor ik jullie hulp nodig zal hebben: Bekijk bijlage Help mij, formules niet wissen TEST 2 juni.xlsm

Wat is nu eigenlijk de bedoeling?

STAP 1
Als ik het document open en “ctr + shift + m” intik, dan verschijnt er in cel “J1” een automatische volgnummer en de datum in “J2” wordt aangepast. Dat is het zowat het enige dat tot hiertoe luktte, maar spijtig genoeg werkt het niet meer.

STAP 2
De verhuurbon wordt ingevuld met de gegevens in de volgende cellen:
Cel J4 is de persoon die de bon invult (hoeft niet echt met een lijstje, maar het zou leuk zijn)
Cellen B13:B16 zijn de klantgegevens (naam, adres, telefoonnummer, e-mailadres)
Cel F18 (=datum) wordt ingevuld als de klant vraagt om het product te leveren aan huis, als hij het zelf komt ophalen op het bedrijf, dan wordt de datum cel F19 ingevuld.
Cel F22 (=datum) wordt ingevuld als het gehuurde product aan huis gehaald moet worden, als de klant het zelf terug brengt, dan zal de datum in cel F23 worden ingevuld.
G18,19,G22,G23 zijn de uren die worden afgesproken. (deze cellen moeten niet mee naar het overzicht, maar achteraf wel gewist worden)
Dus het is afhankelijk van de keuze van de klant welke cellen zullen worden ingevuld (F18:F19, G18:G19,F22:F23,G22:G23)
C24 (leveringsadres) wordt enkel ingevuld als F18 wordt ingevuld
C25 (ophaaladres) wordt enkel ingevuld als F22 wordt ingevuld

E27= het aantal km voor levering
E28= het aantal km als het product terug gehaald wordt

C31= prijs van de huur van de producten (zou normaal gezien een verwijzing naar een andere cel zijn in een ander tabblad zijn, maar de verwijzing wordt steeds gewist, dus ik denk dat ik het beter gewoon zo laat en handmatig invul)
C32= prijs van de verplaatsingskost( zou een verwijzing zijn naar cel G29, maar die wordt mee gewist, dus misschien is het beter om het handmatig in te geven)
C33= prijs huur +kilometervergoeding
F30= de waarborg die wordt betaald (of niet) (deze wordt handmatig ingegeven)

STAP 3: DOOR GEBRUIK VAN DE KNOP "copy values to overzicht"

De ingevulde gegevens worden overgeschreven naar de het tweede tabblad “OVERZICHT VERHURING”. Meer specifiek, naar de bovenste rij.

Ik ondervind nog problemen met cel J4, want die bevat een lijstje en het wordt niet mee overgeschreven.

In cel E31 en 32 staan twee keuzerondjes met “betaald” of “niet betaald”, die had ik graag mee in het overzicht opgenomen zodat ik kan zien of de waarborg al dan niet betaald werd, maar ik weet niet of het mogelijk is.

STAP 4: DOOR GEBRUIK VAN DE KNOP "save wb to other location"

Het is de bedoeling dat de” verhuurbon” wordt opgeslagen op een andere locatie nl. T:\\Verhuur\Verhuurbon2014\... (hier is een onderverdeling gemaakt per maand jan, feb,…dec.)

Ik zou graag willen proberen dat het document wordt opgeslagen onder de volgende naam:
Bijvoorbeeld: “20140702naamklantvervolgnummer” (waarbij de datum uit cel J2 en de vervolgnummer uit J1 komt)

Als het verhuurdocument werd opgeslagen, dan mogen de cellen gewist worden.

STAP 5 ;-)

Hopelijk kunnen jullie me tips geven waar ik m’n vba code of formule kan verbeteren en aanpassen. Het zal zeer leerrijk zijn en daarom wil ik jullie alvast bedanken voor de hulp.

Ik heb geprobeerd om zelf het een en het ander in orde te brengen, maar hoe langer ik eraan werk, hoe meer er mis loopt. Ik vermoed dat ik twee keer dezelfde opdracht geef in de formule.

De inhoud van de cellen komt niet op de juiste plaats, ik vermoed omdat ik hier een aanpassing heb in gedaan:
Sheets("OVERZICHT VERHURING").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 19) = myArray

Ik dacht dat de 19 staat voor het aantal cellen dat wordt overgeschreven, maar misschien (bijna zeker) heb ik wel eens mis.

Bij het overschrijven, wordt de vervolgnummer gewist, en da's zeker niet de bedoeling.

Ondertussen krijg ik ook een foutmelding 1004 als ik de module via vba afspeel.

Alle tips en hulp zijn meer dan welkom...

Mvg

Lies
 
Deze zouden zowat moeten wat jij verlangt.
Code:
Sub copy_ws()

    'Create array with all values
    With Sheets("VERHUURDOCUMENT")
        myArray = Array(.Range("J1"), .Range("J2"), .Range("J4"), .Range("B13"), .Range("B14"), .Range("B15"), .Range("B16"), IIf(.Range("F18") <> vbNullString, .Range("F18"), _
            .Range("F19")), IIf(.Range("F22") <> vbNullString, .Range("F22"), .Range("F23")), .Range("C24"), .Range("C25"), .Range("E27"), .Range("E28"), .Range("C31"), _
            .Range("C32"), .Range("C33"), .Range("F30"), IIf(.OptionButtons("Option Button 9").Value = Checked, "Ja", "Neen"), .Range("F33"))
        'Copy values to Overzicht verhuring
        Sheets("OVERZICHT VERHURING").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 19) = myArray
    End With
    'Display msgbox to inform user
    MsgBox "Values copied!", vbInformation
    
End Sub
Sub Button10_Click()

    Dim path As String
    With Sheets("VERHUURDOCUMENT")
        'create path & name for document
        path = "T:\Verhuur\" & "Verhuurbon" & Year(Date) & "\" & Format(.Range("J2"), "yyyymmdd") & .Range("B13") & .Range("J1") & ".pdf"
        'create PDF-file from document
        .ExportAsFixedFormat 0, path
        'Clear all values from Verhuurdocument
        .Range("J2,J4,B13:H16,F18:G23,C24:H25,E27:E28,F30").ClearContents
    End With

End Sub
 
Beste VBA'ers
Dag Warme Bakkertje

Je hebt dat broodje goed gebakken seg! De formule klopt bijna en is zeer snel, waarvoor dank. Hier en daar doe ik nog wat aanpassingen, maar alles stap per stap.

Eerst en vooral voeg al even een printscreen toe van de problemen waar ik momenteel voorsta: Bekijk bijlage 214123

De code werkt als ik op de knop "copy values" klik, maar de andere knop "save values" werkt nog niet. Vandaar de vraag of ik dit ".ExportAsFixedFormat 0, path" nog moet veranderen of niet?

Mvg

Lies
Bekijk bijlage Map WB.xlsm (dit is het voorlopige documentje)
 
Je printscreen is niet te openen.
Wat betreft je bestand, waarom gebruik je plots ToggleButtons ipv gewone opdrachtknoppen ? (zoek het doel van een Togglebutton eens op)
Het pad dat je nu gebruikt heeft geen uitstaans meer met je eerdere verklaringen in Post#15. Bestaat het pad dat je nu opgeeft in werkelijkheid ook ?
T:\\Verhuur\Verhuurbon2014\... (hier is een onderverdeling gemaakt per maand jan, feb,…dec.)
Dit wou je origineel, wat blijft daar nu van over ?
Bedenk dus eerst wat je uiteindelijk wil voordat we hiermee verdergaan zodat we niet in een cirkeltje blijven draaien.
 
Beste Warme bakkertje,

mijn excuses voor de verwarring en het aanpassen van het document. De reden waarom ik dit doe is omdat ik zoveel mogelijk wil bijleren van VBA. Vandaar dat ik af en toe wat knip en plak, het document vereenvoudig en terug uitbreid. Uiteindelijk zal ik wel het originele document behouden. (m.a.w. geen ToggleButtons e.d. meer in het document) Vanaf nu laat ik het gepruts over aan mezelf en ik zal hier op het forum duidelijker zijn. Verder wil je bedanken voor de hulp, want de formule die je me meegaf werkt nu perfect. Ik heb enkel nog een vraag over het opslaan van het document.

De formule die wordt gebruikt is:


Sub Button10_Click()

Dim path As String
With Sheets("VERHUURDOCUMENT")
'create path & name for document
path = "T:\Verhuur\" & "Verhuurbon" & Year(Date) & "\" & Format(.Range("J2"), "yyyymmdd") & .Range("B13") & .Range("J1") & ".pdf"
'create PDF-file from document
.ExportAsFixedFormat 0, path
'Clear all values from Verhuurdocument
.Range("J2,J4,B13:B16,F18:G23,C24:C25,E27:E28,F30").ClearContents
End With

End Sub

Als ik op de knop druk "gegevens opslaan", dan geeft excel de foutmelding "fout 1004 tijdens de uitvoering: het document is niet opgeslagen. Mogelijk is het document nog geopend of is een fout opgetreden bij het opslagen." In vba kleurt het volgende stukje geel: .ExportAsFixedFormat 0, path

Weet jij (of iemand anders) vanwaar deze foutmelding komt?

Mvg

Lies
 
Lies,
Mijns inziens is het enkel een kwestie van een niet bestaand pad of geen schrijfrechten op die schijf.
Controleer of het gebruikte pad daadwerkelijk bestaat en of je ernaartoe mag schrijven.
Als ik voor mij een bepaald pad gebruik doet de macro perfect wat hij moet doen, dus daar is niets mis mee.

Code:
path = "T:\Verhuur\" & "Verhuurbon" & Year(Date) & "\" & Choose(Month(Date), "jan", "feb", "maa", "apr", "mei", "jun", _
        "jul", "aug", "sep", "okt", "nov", "dec") & "\" & Format(.Range("J2"), "yyyymmdd") & .Range("B13") & .Range("J1") & ".pdf"
Als je bovenstaande gebruikt zou je dus een pad moeten hebben zoals "T:\Verhuur\Verhuurbon2014\Jul. De naam v/h bestand wordt dan 20140704Lies1.pdf
Nogmaals, de macro doet perfect wat hij moet doen controleer dus goed waarheen je (mag) schrijft.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan