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

wildcard in macro?

Status
Niet open voor verdere reacties.

tsjokko

Gebruiker
Lid geworden
16 feb 2005
Berichten
148
Hallo,

Ik heb een groot rooster waar ik de diensten heb voorzien van een kleur en andere opmaak.
Nu heb ik d.m.v. cellen samenvoegen de dienst + aanvullende info in een cel. De aanvullende info is heel variabel. Hoe kan ik de diensten van een kleur blijven voorzien zonder dat de macro zich iets van de laatste tekst in de cel aantrekt? Heb gedacht aan iets als criteria van de eerste 4 tekens maar heb geen idee hoe dat zou moeten.

Wie helpt mij op weg?

Ricky

Klein voorbeeldje als bijlage
 

Bijlagen

Om als criteria 1e 4 tekens te gebruiken kun je de functie =LINKS(cel,aantal) gebruiken.
Zie bijgaand voorbeeldje met voorwaardelijke opmaak.
 

Bijlagen

Jan,

Bedankt voor je reactie. Ik ben bang dat voorwaardelijke opmaak niet kan. Het bronbestand is een exportfile vanuit een personeelsrooster database. A en B zijn nummer en naam, dan 31 kolommen met diensten, dan 31 kolommen met mutaties.
Ik heb een macro gemaakt waarbij C tm BK 61kolommen worden verplaats en dan in C2 begin met samenvoegen.
Resultaat is dan Anummer Bnaam C tm AH met diensten
zo'n 100 rijen en 9 verschillende diensten totaal.
In eerste instantie had ik zonder de mutaties in de macro met colorindex een kleur per dienst gemaakt.

Wat ook een oplossing zou kunnen zijn is; de mutatie van kolom AI tussenvoegen achter C, AJ achter D, enz.
Ik heb een poging gedaan maar middels opnemen en knippen en plakken krijg ik dan wel een heel lange macro. Als je daar een idee voor hebt is het ook goed.

Alvast bedankt voor het meedenken,

Ricky
 
Kun je een (fictief) voorbeeldje geven van hoe het er uit moet komen zien, en welke gegevens daarbij geïmporteerd zijn? Bijvoorbeeld 2 regels of zo.
 
Jan,

Voorbeeldje.

Heb alleen geen kleur ingebracht.
Alles lukt met macro behalve de cel kleuren als niet alle tekst genoemd wordt. Als er alleen gekeken word naar de eerste 4 tekens in de macro is het ook opgelost.?

Hoop dat e.e.a voldoende duidelijk is,

Ricky
 

Bijlagen

Zoiets?

Zie in de macro voor de gekozen kleur.
Kleur heb ik deels afhankelijk gemaakt van de tijd, deels zelf kleur opgegeven. Kijk maar wat je het mooiste vind. (Kleur afhankelijk van de tijd in de cel is niet altijd even leesbaar.)
Cellen waarvan de uitkomst begint met een "=" worden grijs gekleurd (ook die met een waarde die niet opgenomen is bij Case is).
 

Bijlagen

Jan,

Dit doet precies wat ik wil.
Lees ik het goed als vanaf C16 per cel naar de inhoud wordt gekeken op eerst het 1e teken ( = ) en daarna naar de 1e 4 tekens. Afhankelijk van de 4 tekens komt de opgegeven opvulkleur in de cel.

Ervan uitgaande dat bovenstaande klopt zal ik een mix maken van mijn macro met jouw input hierin verwerkt.

Ik zal je morgen van het resultaat op de hoogte brengen.

Hartelijk dank,

Ricky
 
klopt, kijk eerst naar het eerste teken, als dat een = is, is het geen (geldige) tijd en kan meteen een standaard kleur gepakt worden.
Anders wordt de variabele 'kleur' gevuld met de waarde van de eerste twee karakters van de actieve cel.
0600 geeft dus waarde 6, 1200 en 1230 geven waarde 12.
Vervolgens worden de 1e 4 karakters in de variabele 'tijd' gezet en deze wordt gebruikt in de 'case is' selectie. Hierbij kun je steeds zelf een kleur opgeven.
(Bij 1200 en 1430 dus gedaan)
Als je altijd de variabele kleur wilt gebruiken zou je eventueel de hele 'case is' selectie achterwege kunnen laten en meteen kleuren op basis van de 1e 2 karakters.
Omdat dat geen duidelijk overzicht gaf heb ik een mix van beide gemaakt. Aan jou de keus.
 
Bijna

Jan,

Ik heb van alles een bijna werkend geheel kunnen maken. (verplaatsen, samenvoegen en kleuren ) Echter, bij een lege regel gaat het mis. Voorheen had ik als bereik C2:AH107 ingesteld, lege regels werden overgeslagen. Daar werd niets mee gedaan. Ik heb dit aangepast op verschillende manieren maar daar schijn ik iets verkeerd te doen. Kan jij dit laatste plooitje voor mij glad strijken?

Ricky
 
In de while lus wordt steeds gecontroleerd of de actieve cel leeg is, zo ja dan naar boven en één kolom naar rechts. Bevat deze cel een spatie dan stoppen, anders weer steeds één cel naar beneden en controleren.
Het hele proces blijft zich zo herhalen totdat er rechtboven een cel staat met een spatie.
Heb je er een lege regel instaan dan komt de macro hier nooit onder.
Om dat op te lossen kan de while-wend lus vervangen worden door een for-each lus waarbij een gebied opgegeven moet worden.
Moet even uitzoeken hoe for each ook alweer precies werkt, gebruik die eigenlijk niet meer.

Je kunt ook i.p.v. controleren op leeg wat nu gebeurt met IsEmpty controleren of het rijnummer 127 is.
Dus while activecell.row < 128 i.p.v. while not isempty(activecell.value)
 
Jan,

Er staan lege regels ivm tijdelijke overplaatsing van personen. Hij stopt op de eerste lege cel die er staat zonder verder te gaan bovenin de volgende kolom. Bij wijze van test heb ik de lege regels verwijderd, dan komt dezelfde foutmelding op de eerste lege cel die 'ie tegenkomt onderaan de eerste kolom. Het lijkt erop dat de rule voor lege cellen niet gelezen wordt. Ik hoop dat je een oplossing voor mij hebt. Zelf kom ik hier niet uit en ook de anderen op dit forum blijven zwijgen.

Groet,

Ricky
 
aangepaste versie

bijgaand aangepaste versie.
aantal rijen dat gecontroleerd moet worden (van rij tot rij) kun je in het begin van de macro invullen.
 

Bijlagen

Jan,

Om gek van te worden.
In jouw gemaakte voorbeeld loopt alles perfect.
Ook lege cellen worden op de juiste wijze behandeld.
In mijn originele file stopt de macro op de eerste de beste lege cel. Ik heb 2 lege rijen verwijderd maar als iemand tussentijds overgaat ben ik verplicht om de hele maand die persoon te verwijderen. Zoals je aan de tijd kan zien ben ik e.e.a. gaan proberen maar kom er nog steeds niet uit. Ik heb de eerste regels van mijn file in jouw voorbeeld geplakt zodat je zelf kan zien wat er gebeurd.

Ricky, nog steeds hoopvol
 

Bijlagen

Ricky,

bijgaand versie 4.
Probleem was dat getest werd op lege cellen. Je cellen waren echter niet leeg, vanuit de formule komt er een spatie in staan.
Controle op lege cellen eruit gehaald. Controle gebeurd nu puur op regel en kolomnummer. Macro stopt zodra kolom AG (=33) bereikt wordt.

Nu zou het compleet moeten werken.
 

Bijlagen

Jan,

Versie 4 getest en kan je vertellen dat het werkt. SUPER!

Bedankt voor de hulp, tijd en geduld.

:thumb:

Ricky
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan