• 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.

Hulp met Macro code

Status
Niet open voor verdere reacties.

tshw3

Gebruiker
Lid geworden
19 mei 2017
Berichten
92
Hallo Helpmijleden,

Ik heb al verschillende keren een vraag gesteld op het helpmij forum en iedere keer voortreffelijk geholpen.
Nu heb ik denk ik een vrij simpele vraag maar ik kom er niet uit.

Op het offerte blad staat in het vakje A11 de automatische datum.
Nu is alleen het probleem dat iedere keer ik de macro gebruikt "offerte boeken".
De formule verdwijnt =VANDAAG(). Hoe kan ik deze formule laten staan zonder dat de macro de formule verwijdert?

Bekijk bijlage Bronbestand Excel 2017 Teun R36.xlsm

Met vriendelijke groetjes,
Teun
 
Laatst bewerkt:
Deze code op het einde van uw macro 'offerte boeken'
Net na Range("A4").ClearContents bv.
Code:
[A11].FormulaR1C1 = "=TODAY()"
 
Deze code op het einde van uw macro 'offerte boeken'
Net na Range("A4").ClearContents bv.
Code:
[A11].FormulaR1C1 = "=TODAY()"

Hallo Philiep,

Zoals altijd. Hartstikke bedankt en dit werkt inderdaad.
Ik wist niet dat je de formules ook via Macro erin kon zetten.

Met vriendelijke groetjes,
Teun
 
Hoi Teun,
Ik wist niet dat je de formules ook via Macro erin kon zetten.
In uw school vergeten ze blijkbaar regelmatig een aantal belangrijke zaken te vermelden.
o.a. dat je select (of activate) zelden nodig hebt, dit vertraagt je code. (op zijn Belgs, nog geen klein beetje ook)
Een paar voorzetjes
Deze stukjes code
Code:
Range("G" & rij).Select
        Selection.Resize(rijen) = Sheets("Offerte").Range("A4").Value
Range("H" & rij).Select
    Selection.Resize(rijen) = Sheets("Offerte").Range("A11").Value
kan je zo vervangen door
Code:
Range("G" & rij).Resize(rijen) = Sheets("Offerte").Range("A4").Value
Range("H" & rij).Resize(rijen) = Sheets("Offerte").Range("A11").Value
of wat je hier wilt bereiken
Code:
 Sheets("Offerte").Select
    Range("B11") = Range("B11") + 1
    Range("A16:B24").ClearContents
    Range("A4").ClearContents
    Range("A11").Value = Date
door
Code:
With Sheets("Offerte")
    .[B11] = .[B11] + 1
    .[A4,A16:B24].ClearContents
    .[A11].FormulaR1C1 = "=TODAY()"
    End With
En om al dat scherm gejump tegen te gaan kan je deze ook overwegen
Code:
application.ScreenUpdating=False
[COLOR="#008000"]' uw code[/COLOR]
application.ScreenUpdating=True

Dit zijn gewoon een paar tips omdat je in een van je postjes hebt aangegeven dat je best wel een goede score wilt halen. Je doet er verder mee wat je wilt natuurlijk.
 
Hoi Teun,

In uw school vergeten ze blijkbaar regelmatig een aantal belangrijke zaken te vermelden.
o.a. dat je select (of activate) zelden nodig hebt, dit vertraagt je code. (op zijn Belgs, nog geen klein beetje ook)
Een paar voorzetjes
Deze stukjes code
Code:
Range("G" & rij).Select
        Selection.Resize(rijen) = Sheets("Offerte").Range("A4").Value
Range("H" & rij).Select
    Selection.Resize(rijen) = Sheets("Offerte").Range("A11").Value
kan je zo vervangen door
Code:
Range("G" & rij).Resize(rijen) = Sheets("Offerte").Range("A4").Value
Range("H" & rij).Resize(rijen) = Sheets("Offerte").Range("A11").Value
of wat je hier wilt bereiken
Code:
 Sheets("Offerte").Select
    Range("B11") = Range("B11") + 1
    Range("A16:B24").ClearContents
    Range("A4").ClearContents
    Range("A11").Value = Date
door
Code:
With Sheets("Offerte")
    .[B11] = .[B11] + 1
    .[A4,A16:B24].ClearContents
    .[A11].FormulaR1C1 = "=TODAY()"
    End With
En om al dat scherm gejump tegen te gaan kan je deze ook overwegen
Code:
application.ScreenUpdating=False
[COLOR="#008000"]' uw code[/COLOR]
application.ScreenUpdating=True

Dit zijn gewoon een paar tips omdat je in een van je postjes hebt aangegeven dat je best wel een goede score wilt halen. Je doet er verder mee wat je wilt natuurlijk.

Hallo Philiep,

Dit is zeer zeker correct, ik wil inderdaad een goede score halen dus ga hier zeker mee aan de slag.

De reden waarom dit op school niet is uitgelegd is omdat ik Bedrijfskunde studeer en geen ICT opleiding :). De docenten zijn dus ook niet zover onderlegd dat ze VBA 100% begrijpen.
Nogmmaals bedankt voor je uitleg en ik ga ermee aan de slag!

Met vriendelijke groet,
Teun
 
Beste Teun,
Je hoeft me niet iedere keer te quoten (meestal weet ik wat ik schrijf, na een paar extra Duveltjes kan dat iets minder zijn:shocked:)
Gebruik gewoon de knop Snel reageren.
 
Om de docenten nog wat meer in verwarring te brengen;)

Code:
Sub Offerteboeken()
Dim lr As Long, ar, ar1
If MsgBox("Wilt u deze offerte boeken?", vbOKCancel, "Offerte boeken") = vbCancel Then Exit Sub
  ar = Array([B11].Value, [A4].Value, [C11].Value)
  ar1 = Cells(15, 1).CurrentRegion.Offset(1).Columns(1).SpecialCells(2).Resize(, 5)
  Range("B11") = Range("B11") + 1
  Range("A4,A16:B24").ClearContents
  With Sheets("Verkoop").ListObjects(1)
    lr = .ListRows.Count + 1
    .Resize .Range.Resize(lr + UBound(ar1))
    .DataBodyRange.Cells(lr, 1).Resize(UBound(ar1), 5) = ar1
    .DataBodyRange.Cells(lr, 6).Resize(UBound(ar1), 3) = ar
  End With
End Sub
 
Hallo VenA,

Hartstikke bedankt voor je feedback. Ik zal deze code verwerken in mijn stuk!
Ook heb ik nog een vraag die u misschien welt kunt beantwoorden. De vraag heb ik ook al gestuurd naar Philiep maar als u kunt hulpen zou dit ook fijn zijn. (ook al ben ik ook heel gelukkig met de hulp van Philiep)

Heb alleen het volgende probleem:
Ik heb een klok toegevoegd op mijn voorblad. Dit leek mij een leuke toevoeging voor het project.

Nu heb ik alleen het volgende probleem:
Iedere keer als ik het document open dan veranderen alle rijdbreedtes. Als ik op tabbladen rechtzetten druk dan staan ze wel weer goed zoals het hoort.
Hoe kan het toch dat iedere keer ik het document opnieuw open het weer niet recht staat?

Ook is het zo dat ik het excel document nu veel moeilijker afgesloten krijg en weigert die dit soms niet te doen.

Heeft u hiervoor een oplossing?

Bekijk bijlage Bronbestand Excel 2017 Teun R40.xlsm

Met vriendelijke groet,
Teun
 
Je schrijft ergens dat je bedrijfskunde studeert. Dan mag ik aannemen dat je alleen relevante zaken wilt hebben. Fratsen om zaken op te leuken en te vertragen doe je dus bij voorkeur niet. Ik zie in de taakbalk wel hoe laat het is. Waarschijnlijk zet je de timer niet uit bij het afsluiten van het bestand en dan stopt deze pas als je Excel volledig afsluit. (Veel voorkomend probleem bij mensen die maar klakkeloos wat implementeren.);)
 
Haha heb wel mijn best om het goed te implementeren en ben er mee eens dat een klok nou niet meteen relevant is.
Maar dacht het is iets extra's wat geen andere student heeft.

Maar dan denk ik inderdaad dat ik alles wel heb en dat het er nu ook strak uit ziet. Ik haal de klok er weer uit :).
 
VenA ook zonder die codes verkleint mijn voorblad de hele tijd.
Weet u hoe dit kan?
 
#8 is berichtnummer 8

Wat je met de laatste vraag bedoelt ontgaat mij. En ga ik ook niet bekijken in een bestand waarin een timer staat.
 
Iets consistenter codegebruik:

Code:
Sub Offerteboeken()
  If MsgBox("Wilt u deze offerte boeken?", , "Offerte boeken") = 2 Then Exit Sub
  
  With Sheets("Verkoop").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(Cells(15, 1).CurrentRegion.Columns(1).SpecialCells(2).Count - 1, 5)
      .Value = Cells(15, 1).CurrentRegion.Columns(1).SpecialCells(2).Offset(1).Resize(, 5).Value
      .Offset(, 5).Resize(, 3) = Array([B11], [A4], [C11])
  End With
  
  [B11] = [B11] + 1
  [A4,A16:B24].ClearContents
End Sub

Zet deze code in de codemodule van het werkblad "Offerte"
Zet de draaitabelcode in de codemodule van het 'voorblad'
Verwijder alle andere macromodules.
En verwijder in ieder geval die application.ontime code.
 
Laatst bewerkt:
Aangepast bestand

Heren,

Allebei bedankt voor de input.
Tijdcode meteen weggegooid op advies van jullie en natuurlijk ben ik het daar ook mee eens.
Zoals eerder verteld het was meer voor de leuk en iets extra's dan klasgenoten dan dat het daadwerkelijk toegevoegde waarde had.

Ik hoop dat ik nu alles goed heb aangepast.

Blijft wel het probleem die ik nu heb met het voorblad.
Iedere keer als ik het document open dan verschuift alles heel raar waardoor regel 25 niet meer mooi wordt weergegeven.
Als ik dan op tabbladen rechtzetten druk dan staan ze goed en als ik dit dan opsla en opnieuw open dan staat het weer in de oude vorm.
Ik hoop dat jullie mij begrijpen.
Bekijk bijlage Bronbestand Excel 2017 Teun R41.xlsm

Met vriendelijke groet,
Teun
 
Zoals al eerder geschreven haal geen malle fratsen uit.

Code:
Worksheets("Voorblad").Columns("A:I").AutoFit
is de boosdoener.
 
Code:
Worksheets("Voorblad").Columns("A:I").AutoFit
is de boosdoener.[/QUOTE]

Is het dan de bedoeling dat ik dit handmatig moet veranderen?
Als er namelijk producten in de tabel komen die niet volledige in de tabblad passen dan zou ik graag willen dat die automatisch alles recht zet. Zodat de naam helemaal leesbaar is.

Nu moet dat dus met de hand. Met de code dacht ik juist dat ik dit makkelijk kon veranderen.

Met vriendelijke groetjes,
Teun
 
Ik heb de code er helemaal uit gehaald maar dan doet die nog steeds hetzelfde.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan