Hoi allemaal Mijn probleem is om een macro te maken die het mogelijk maakt om, zodra het bestand is geopend (op een netwerk en voor meerdere gebruikers), de datum van vandaag op de gewenste regel te zetten, evenals de kleur van de gebruiker die op een regel de codering van het plan heeft geschreven.
Hiermee kunt u bijhouden hoeveel en door wie de plannen zijn gemaakt.
Aangezien de computer een specifieke naam in het netwerk heeft, kunnen gebruikers die hun plannen in de tabel coderen, een eigen kleurcode hebben. Is het mogelijk?
Als ik het goed begrijp wat je wilt doen: de gebruiker opent het Excel-bestand, geeft het plannummer aan, sluit het Excel-bestand?
Waarom voert u de datum en gebruikersnaam niet tegelijkertijd in? Ik hou echt van macro's ... maar ik ben een beetje bang dat je je dossier onnodig ingewikkeld maakt, toch?
Derline = Blad1.Cellen(1, "B"). Einde (xlDown). Rij' Haalt de laatste niet-lege rij van de kolomcel "Datum" blad1 op uit cel "B3"
Sheet1.Cells(Derligne, "B") = Datum 'Ingevoerd de datum van de dag
coul = Cellen.Vind(Naam, Cellen(1, "E")). Interior.ColorIndex 'Haalt de kleur van het vak op met de gebruikersnaam bereik(cellen(derligne, "a"), cellen(derligne, "c")). Interior.ColorIndex = kleur
Einde Sub
Aan de andere kant, wees voorzichtig. De gebruikersnaam moet RIGOUREUS hetzelfde zijn tussen het Excel-bestand en de pc, anders kan deze niet vinden (dezelfde spaties, hetzelfde hoofdlettergebruik, enz. enz.).
Ik blijf geloven dat het een bron van verveling is voor jouw ding!
Bedankt coin37coin, Nee, niet doen, het is voor vereenvoudigd een woordbestand om met de hand in te vullen. Er zijn er die er soms in slagen om fouten te maken. Wanneer gaan we te snel... Bedankt, ik test dit allemaal.
Edit: Wat voor mij, ze schreef in plaats van de laatste regel (kleine mismatch)
Sub AutoName()
Name = Application.UserName ' gebruikersnaam Derline = Blad1.Cellen(1, "B"). Einde (xlDown). Rij' Haalt de laatste niet-lege rij van de kolomcel "Datum" blad1 op uit cel "B3" Lijn = Derline + 1 'Voeg een regel toe om op een lege te gaan Blad1.Cellen(Regel, "B") = Datum
coul = Cellen.Vind(Naam, Cellen(1, "E")). Interior.ColorIndex 'Haalt de kleur van het vak op met de gebruikersnaam bereik(cellen(lijn, "a"), cellen(lijn, "c")). Interior.ColorIndex = kleur
Hier is de gecorrigeerde macro, maar deze hangt af van de volgorde van de acties van de gebruiker:
Hij zal eerst zijn referentie aan het einde van de lijst schrijven ?
Sub AutoName()
Name = Application.UserName ' gebruikersnaam
derligne = vellen("blad1"). Cellen(1, "A"). Einde (xlDown). Rij' Haalt de laatste niet-lege rij van de kolomcel "Datum" blad1 op uit cel "B3"
Vellen("Blad1"). Cellen (Derligne, 2). Waarde = Datum 'De datum van de dag ingevoerd
Set cell = Cells.Find(what:=Name, LookAt:=xlWhole) 'Haalt de kleur van het vak op met de gebruikersnaam coul = cel. Interieur.ColorIndex bereik(cellen(derligne, "a"), cellen(derligne, "c")). Interior.ColorIndex = kleur
Voor de knop moet je naar het tabblad "ontwikkelaar" gaan => invoegen => knop
Vervolgens voegt u de knop in uw blad in alsof het een notitie is (een linker- en rechtermuisklik naar links om de grootte in te stellen) en vervolgens een rechtermuisknop op de =-knop> een macro toewijzen => selecteer uw macro uit de lijst
Aan de andere kant moet de macro natuurlijk eerst in je visuele basis staan
Om het ontwikkelaarstabblad weer te geven (als je het niet hebt), moet je naar bestand => opties => Het lint aanpassen => klik op het vakje "ontwikkelaar" in "hoofdtabbladen" als je dat niet doet
Ik vertel het je niet in het dossier, omdat ik denk dat het beter is om een beetje te worstelen en te leren dan een kant-en-klare oplossing te hebben;)
Edit: je zult voorzichtig zijn, je laat veel informatie achter in je bestanden tussen deze vraag en de vorige. Er is de naam van je collega's of de volledige lijst van onderdelen van je bedrijf. Ik raad je aan om je berichten te bewerken en te verwijderen/wijzigen.
-> Je schrijft op de laatste regel (ref 20244). En niet op de laatste + 1 regel Kleine lijn van wijziging te maken zoals voor mijn 2e macro
-> Je hebt de limieten van de VBA bereikt: als het niet werkt, komt dat omdat je de naam van de gebruiker niet PRECIES hebt geschreven zoals deze in de machine is ingevoerd. Dat is wat ik helemaal aan het begin van de vraag zei: het wordt een voortdurende bron van fouten zodra een nieuwe gebruiker binnenstormt.
Ik zal je daarom adviseren om een kleine macro te maken die je met elke gebruiker kunt doen op basis van:
Sub DefName ()
Naam = Toepassing.Gebruikersnaam
ActiveCell = Naam
Einde Sub
Je hoeft alleen maar het vakje aan te vinken waar je de naam wilt plaatsen, de macro te starten en voilà, het is correct ingevuld. Te doen voor elk van de aanwezigen