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

Een paar vraagjes over het gebruik/optimalistatie van macro's

Status
Niet open voor verdere reacties.

Bas web

Gebruiker
Lid geworden
5 mrt 2008
Berichten
86
Goedemorgen,

zoals in dit topic is te lezen ben ik bezig om een aantal waarden uit tabellen te vissen en deze in een grafiek te laten weergeven. Dat is inmiddels (mede dankzij dit forum :thumb:) allemaal gelukt maar nu wil ik de macro's nog wat netter hebben.

Ze staan nu weergegeven als:
naamloosd.jpg


Ik krijg de namen van blad1..... en blad3... niet gewijzigd. Ik vind het er zo niet zo heel erg overzichtelijk uit zien.
Is dit te wijzigen?

Alvast bedankt!
 
Wijzig in je VB_Editor gewoon de naam die tussen Sub ......() staat.
Oonthoud echter ook dat als je de macro's aan knoppen hebt toegewezen dat je deze link ook moet vernieuwen naar de nieuwe naam.
 
Laatst bewerkt:
Dat dacht ik dus ook, maar het probleem is dat de tekst blad1 blijft staan... Ik denk dat je wel weet hoe dat komt als ik een screenshotje plaats (ik weet het overigens niet hoor :eek:):
naamloos1dm.jpg


Ik ben inmiddels begonnen met het samenvoegen van alle macro's zodat alle acties in 1x uitgevoerd kunnen worden.
Ik had hier een flink stuk tekst met een probleem/vraagstuk geschreven maar tijdens het kopieren en plakken van de regels in VB dacht ik ineens het licht te zien :cool: en heb daarbij het probleem (tot nu toe) zelf opgelost.

Dus tot op heden nog even geen vragen. Ik ga weer verder met het samenvoegen en optimaliseren, mocht ik nog iets hebben, laat ik me wel weer horen. Mocht het allemaal lukken zal ik dit topic markeren als "opgelost".

Al zou ik het voor m'n eigen kennis wel fijn vinden waarom de ene macro onder "excelobjecten" staat en de andere onder "module".
 
De maro's in de modules hebben hun werking over alle werkbladen in het bestand. De macro's onder Objecten zijn specifiek voor dat werkblad (de zogenaamde Event-macro's die automatisch gestart worden door een bepaalde actie op dat werkblad).
Wat betreft het samenvoegen dat je bezig bent zou ik niet de teksten allemaal samenvoegen maar de macro aanroepen vanuit de huidige procedure bv je hebt een macro gemaakt die bepaalde cellen optelt (Cellen_Optellen) en een macro die bepaalde bereiken wist (Cellen_Wissen). Start nu je macro Optellen en roep de macro Wissen aan door in de lopende procedure de naam van de Wissen macro te schrijven. je maakt ahw even een zijsprong en gaat daarna verder met de lopende procedure.
Code:
Sub Cellen_Optellen()
    uitvoeren cellen optellen
Cellen_Wissen 'macro wordt aangeroepen, uitgevoerd en de huidge procedure loopt verder 
   eventueel verdere handelingen
End Sub
Door al deze aparte procedures te maken blijft je macro ook veel duidelijker dan dat je 100 regels onder elkaar hebt staan (ook voor foutopsporing)
PS de macro's met blad voor staan dus eigenlijk op een verkeerde plaats
 
Laatst bewerkt:
Tja, dat was waarschijnlijk wel duidelijker geweest :D

Ik ben deze week pas voor het eerst begonnen met VB en dus is de code nog erg basic en goed te volgen:

Code:
Sub gegevens_verwerken()
'
' gegevens_verwerken Macro
'

'
    Sheets("Afkeur aantallen").Select
    Cells.Select
    Selection.ClearContents
    Workbooks.Open Filename:= _
        "afkeur aantallen.xls"
    Cells.Select
    Selection.Copy
    Windows("Afkeuranalyse.xlsm").Activate
    ActiveSheet.Paste
    Columns("B:B").Select
    Selection.Replace What:="gietmachine", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("C:C").Select
    Selection.Replace What:=".01", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A2").Select
    Sheets("Productie_aantallen").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Workbooks.Open Filename:= _
        "netto aantallen.xls"
    Cells.Select
    Range("B1").Activate
    Selection.Copy
    Windows("Afkeuranalyse.xlsm").Activate
    ActiveSheet.Paste
    Columns("B:B").Select
    Selection.Replace What:="ffs", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("B5").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Gietcel"
    Range("B1").Select
    Windows("afkeur aantallen.xls").Activate
    ActiveWindow.Close
    Windows("netto aantallen.xls").Activate
    ActiveWindow.Close
    Sheets("Geselecteerde_gegevens").Select
    Range("P12").Select
    Selection.Copy
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A1").Select
    Sheets("Afkeur aantallen").Select
    Range("B7:E1000").AdvancedFilter xlFilterCopy, [RekenbladGrafiek!I10:K11], [Geselecteerde_gegevens!a65536].End(xlUp).Offset(1), False
    Sheets("Productie_aantallen").Select
    Range("B5:D100").AdvancedFilter xlFilterCopy, [RekenbladGrafiek!I10:K11], [Geselecteerde_gegevens!f65536].End(xlUp).Offset(1), False
    Sheets("Grafiek").Select
End Sub

Dus de volgende keer kan ik beter'" werkbladspecifieke" marco's maken en dan oproepen via een module?
 
:confused: hmmm, vreemd.

net werkte het allemaal, nu heb ik alles afgesloten en gekopieerd naar een andere locatie en nu gaat het hier fout:
Code:
 Workbooks.Open Filename:= _
        "netto aantallen.xls"
Zodra ik daar invul C:\mijn documenten\etcetc dan werkt het wel.

Dat bestandje staat altijd in dezelfde map als de excelsheet. Aangezien deze file op meerdere pc's gebruikt gaat worden, zou het fijn/makkelijk zijn als dat kan zonder steeds die locatie aan te moeten passen.
Is dat mogelijk?
 
Als het bestand in dezelfde directory staat kan je ThisWorkBook.Path gebruiken ipv het volledige pad op te geven
Code:
Workbooks.Open Filename:= _
        ThisWorkbook.Path & "\" & "netto aantallen.xls"
 
tnx, dat gedeelte werkt nu :thumb:

Enkel kan ie nu het bestand niet meer sluiten :(
Code:
    Windows("afkeur aantallen.xls").Activate
    ActiveWindow.Close

geprobeerd om daar ook jou tip in te verwerken maar dat wilde ie niet :(
 
Code:
Workbooks("afkeur aantallen.xls").Close False 'eventuele wijzigingen worden niet opgeslagen
 
Perferct!!!! :thumb::thumb::thumb::thumb::thumb:

Super, dank je wel hiervoor!

Nu is ie qua macro's ed helemaal af, heb ik enkel nog een vraagje mbt de opmaak van een datumcel (zie andere topic van me ;))

Tenminste.... hij is nu af voor mij. Nu afwachten tot m'n collega's terug zijn van vakantie die er mee moeten gaan werken, hopelijk zijn zij ook tevreden :p

Hartelijk dank voor je hulp! :cool:

(jullie zouden eigenlijk het "reputatiepuntensysteem" van vBulletin in moeten schakelen zodat we jullie op die manier ook kunnen "bedanken")

Groetjes,
Bas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan