Combinaties van 2 kolommen invullen in 2 velden

Status
Niet open voor verdere reacties.
@Interface

Kijk nog eens naar mijn code.
Daar wordt alles op geheugennivo verwerkt.

Het knipperen van het beeld wordt veroorzaakt door alle bewerkingen in het werkblad die jouw code uitvoert.
In mijn code wordt het resultaat van alle akties in 1 keer naar het werkblad geschreven.
Hoe minder wijzigingen in het werkboek/werkblad worden uitgevoerd hoe sneller de code is.

Ook copy/paste akties vergen veel van het geheugen. Als je ze kunt vermijden heeft dat de voorkeur.

Suggestie: beschouw het werkboek en de werkbladen slechts als opslagplaatsen (magazijnen) van gegevens. Gebruik het geheugen van de computer om met VBA berekeningen/bewerkingen uit te voeren. Pas dan als laatste de gegevens in het werkboek aan.
Dan zijn de instrukties Application.Displayalerts=false, Application.Screenupdating=false, Application.Calculation=xlmanual, Application.EnableEvents=false overbodig.
 
Laatst bewerkt:
@Interface

Kijk nog eens naar mijn code.
Daar wordt alles op geheugennivo verwerkt.

Het knipperen van het beeld wordt veroorzaakt door alle bewerkingen in het werkblad die jouw code uitvoert.
In mijn code wordt het resultaat van alle akties in 1 keer naar het werkblad geschreven.
Hoe minder wijzigingen in het werkboek/werkblad worden uitgevoerd hoe sneller de code is.

Ook copy/paste akties vergen veel van het geheugen. Als je ze kunt vermijden heeft dat de voorkeur.

Suggestie: beschouw het werkboek en de werkbladen slechts als opslagplaatsen (magazijnen) van gegevens. Gebruik het geheugen van de computer om met VBA berekeningen/bewerkingen uit te voeren. Pas dan als laatste de gegevens in het werkboek aan.
Dan zijn de instrukties Application.Displayalerts=false, Application.Screenupdating=false, Application.Calculation=xlmanual, Application.EnableEvents=false overbodig.

Ik zal ook nog eens naar jouw code kijken. Wat betreft het berekenen: ik zie geen mogelijkheid om dat allemaal door VBA uit te laten voeren.

Overigens is dit nog maar een basis-code. In het echte bestand moet meer gekopiëerd en geplakt worden.

Maar al met al ben ik zeer tevreden. Ik heb wat ik moet hebben. Al moet ik de code nog wat aanpassen voor het echte bestand. Wellicht dat ik dan weer overbodige/onhandige code maak. Maar in dat geval kom ik hier wel weer terug.

Bedankt beide!
 
@ snb

Ik ben het helemaal met je eens. Ik weet ook wel dat jou macro beter is in principe. Het enige wat ik had kunnen doen is een nieuwe Array aanmaken en wat ik nu doe met het terug plaatsen in werkblad in die Array te verwerken, en vervolgens de gehele array verwerken(als laatste) in het werkblad.

Als dit een macro voor mijzelf was geweest had ik dit ook gedaan. Om voor giten e.a wat eenvoudiger te maken en het mogelijk te maken om zijn copy & paste te kunnen toepassen heb ik het maar zo gedaan. Ook had ik niet heel veel tijd/zin om hier de perfecte macro te maken. Om het nog enigszins simpel te houden is mijn voorbeeld/oplossing goed genoeg. We praten in deze opzet over milliseconden.

Ook ben ik zeker geen voorstander van copy en paste, dit zoals jezelf aangeeft omdat e.a. dit veel vertraagd. Daarboven op is de macro van jou(en misschien net wel als die van mij), onbegrijpelijk voor iemand die denkt dat formules sneller werken dan het gebruikt van vba, of niet eens weet wat option explicit is (of uberhaubt weet wat declareren van variabelen) is.

Het mooie van VBA is dat er meerdere wegen zijn die naar Rome gaan, voor mij persoonlijk zijn milliseconden verwaarloosbaar. Daarbij moet ik wel zeggen dat jou macro's uit een boekje hadden kunnen komen, ik denk ook dat er geen manier is om het veel sneller te doen(al is dat verschil al bijna niet meer meetbaar), ach ja je zou die variabelen nog kunnen declareren....
 
onbegrijpelijk voor iemand die denkt dat formules sneller werken dan het gebruikt van vba,

Ik denk niet dat formules sneller werken dan VBA, ik weet alleen niet hoe ik dat hele excel-bestand zou moeten ombouwen. Bovendien moeten de mensen die ermee werken dingen kunnen wijzigen.

of niet eens weet wat option explicit is (of uberhaubt weet wat declareren van variabelen) is.

Dat dan weer wel. Ik begin inderdaad net om de hoek kijken met VBA.
 
@ giten

Het was ook niet voor jou bedoelt, no hard feelings....

Zelfs als mensen gegevens wijzigen is VBa nog mogelijk(zelfs nog beter).
 
Het was ook niet voor jou bedoelt, no hard feelings....

Voor mij ook no hard feelings. Ook al was het wel voor mij bedoel: ik ben niet zo gemakkelijk te beledigen.

Zelfs als mensen gegevens wijzigen is VBa nog mogelijk(zelfs nog beter).

Dat geloof ik direct. Misschien een project voor als ik wat meer van VBA weet.
 
Ik heb nog een paar problemen.

1. De gegevens worden geplakt in het actieve excel-tabblad en niet in het bedoelde tabblad. Wat doe ik fout?

2. Hoe zorg ik ervoor dat tabblad 'Resultaat' geleegd wordt voordat de macro uitgevoerd wordt?

3. Hoe zorg ik dat er iets anders geplakt wordt als er bij het resultaatveld '#N/B' staat (dit gebeurt bij het invoeren van een foute code). Ik kan wel een excel-manier verzinnen (gewoon zorgen dat er in dat veld geen '#N/B' komt te staan), maar iets zegt me dat dat niet de beste methode is. :)

4. Als ik 1 code invul in beide kolommen krijg ik deze foutmelding:

Fout 6 tijdens uitvoering: overloop.

Hier gaat het fout:

For intCounter2 = 1 To UBound(arrCodeOne) * UBound(arrCodeTwo)

Wordt de loop oneindig o.i.d.?


Edit:

Probleem 2 heb ik inmiddels opgelost met:

Sheets("Resultaat").Select
Range("A2:E2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan