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

Kolom erbij na druk op een "knop"

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
Hallo,

Laat me beginnen met te zeggen dat ik niks afweet van programmeren binnen excel.
Ik werk in een school voor gehandicapte kinderen in België en de administratieve verplichtingen die ons van "hogerhand" opgelegd worden, worden steeds maar gekker.
We proberen dus zoveel mogelijk te automatiseren en op een manier dat ook de oudere collega's ermee overweg kunnen.
Een hele klus blijkt.
Om de "loopbaan" van onze kinderen beter in kaart te brengen, en ze, waar nodig, ook beter te begeleiden, stelde ik een excel bestand op waar alle vaardigheden die een leerling moet beheersen op het einde van zijn schooltijd, in vermeld staan.
Elke collega kan (en moet) scores geven op verschillende items.

Ik zou hen graag, als ze een score willen inbrengen, volgend traject willen laten afleggen:
(elke leerling heeft een individuele fiche=excel bestand)
in cel A1 geven ze het jaar in waarvoor ze een score willen toekennen (1 tot 5)
in cel A2 het trimester (1 tot 3)
in cel A3 vullen ze hun naam in

Ik wou graag een knop aanmaken die, als je er op klikt, in de eerstvolgende lege kolom (aan de rechter kant), automatisch een kolom aanmaakt met dan in cellen (bvb) M1, M2, M3 de waarden van de cellen A1-A2-A3

Kan mij iemand helpen dit te maken aub... zit zowat met de handen in de haren.

Alvast bedankt in naam van onze stundeten!

Jean-Paul
 
Zo bijvoorbeeld:

Code:
Sub gegevenskopieren()
    Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Resize(3) = [A1:A3].Value
End Sub

Volg ook andere topics op het forum hier, daar steek je nog het meeste van op :thumb:

Wigi
 
Bedankt voor de reply.

Ik maakte een knop aan en schreef:

Code:
Private Sub Kolom_toevoegen_Click()

    Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Resize(3) = [B1:B3].Value

End Sub

maar er gebeurt niets...
Deed zeker weer een of ander verkeerd....
Kan je me nog even helpen?

Je hebt inderdaad gelijk dat ik hier op het forum een en ander zou moeten volgen, maar, ik raak al snel de draad kwijt, dingen zijn nogal dikwijls boven mijn petje; en ik sta wat onder tijdsdruk.
Veel moet er niet meer gebeuren aan het bestand (denk ik) en de man die me hielp kan voorlopig geen tijd vrij maken (wegens operatie).
See...
is wat ***** eigenlijk op dit moment.
Collega's trekken aan mijn arm en ik kom niet echt vooruit.
Groetjes
JP
 
Laatst bewerkt door een moderator:
Is het juiste tabblad actief wanneer je de code uitvoert?
 
JEPEDEWE , Private Sub Kolom_toevoegen_Click() dit vraagt om een commandbutton , ik veronderstel dat je deze dan ook gebruikt om de macro aan te sturen . Is de schrijfwijze " benoeming van de button " dezelfde als de macro ?
 

Bijlagen

  • knop_kolom.jpg
    knop_kolom.jpg
    90,9 KB · Weergaven: 47
Yep maat, dat was't, het knopke werkt zoals bedoeld.
Maar, hier zijn we weer...
Zoals het nu werkt wordt, wat in cel A1 staat gecopîeerd naar de "eerstvolgende-lege-cel_1"
A2 naar de "eerstvolgende-lege-cel_2"
A3 naar de "eerstvolgende-lege-cel_3"

kan ik wat in A3 staat ook naar "eerstvolgende-lege-cel_4"

zou layout wel ten goed komen.

Merci
 

Bijlagen

  • excel.jpg
    excel.jpg
    55,9 KB · Weergaven: 45
Yep maat, dat was't, het knopke werkt zoals bedoeld.
Maar, hier zijn we weer...
Zoals het nu werkt wordt, wat in cel A1 staat gecopîeerd naar de "eerstvolgende-lege-cel_1"
A2 naar de "eerstvolgende-lege-cel_2"
A3 naar de "eerstvolgende-lege-cel_3"

kan ik wat in A3 staat ook naar "eerstvolgende-lege-cel_4"

zou layout wel ten goed komen.

Merci

Hallo,

Zo bijv.
Code:
Private Sub Kolom_toevoegen_Click()
    Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Resize(2) = [B1:B2].Value
    Cells(1, Columns.Count).End(xlToLeft).Offset(3) = [B3].Value
End sub
Met vr gr
Jack
 
Super mannen..;
Sorry maar ik blijf vragen hoor...

Kan ik er ook voor zorgen dat de nieuwe kolom die toegevoegd wordt automatisch 2.57 (of zo iets) breed wordt en dat wat in de 4de rij staat automatisch een kwartslag tegenwijzerzin georienteerd wordt?

Merci

JP
 
Je gaat best aan de slag met de "macro recorder" in VBA. Dan heb je direct de eigenschappen die jij zoekt.
 
Mijn code ziet er nu als volgt uit:

Private Sub Kolom_toevoegen_Click()
Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Resize(2) = [B1:B2].Value
Cells(1, Columns.Count).End(xlToLeft).Offset(3) = [B3].Value
Selection.ColumnWidth = 2.57
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub

maar dat werkt van geen meter...

sorry mannen/vrouwen
 
VBA code schrijven is nog wel iets meer dan enkel de macro recorder gebruiken.

Maar je weet nu tenminste al dat je de ColumnWidth eigenschap moet gebruiken.

Je past dit in de code hierboven nu toe op Selection. Waarom niet op de kolom toepassen die we in de eerste regels al bepaald hebben?
 
Goeie vraag natuurlijk...

Zou alleen niet weten hoe je bepaalt hebt in welke kolom je nu precies aan het werken bent...
Die eerste lijnen code zijn wel chinees voor mij zelle!
Dus... hou mijn handje even vast wil je

Sorry voor mijn oeverloze domheid... so be it

JP
 
Hallo,

Hier nog een ongekuisde versie.
Ik heb vluchtig met de macro gewerkt en het werkt, maar volgens mij steekt het nog niet helemaal goed in elkaar. (geen tijd meer) Ik hoop dat je er wat aan hebt.

Met vr gr
Jack
Code:
Private Sub Kolom_toevoegen_Click()
  X = Cells(1, Columns.Count).End(xlToLeft).Column + 1
    Columns(X).EntireColumn.Insert
    Columns(X).ColumnWidth = 2.57
        Cells(1, X) = [A1]
        Cells(2, X) = [A2]
        Cells(4, X) = [A3]
        Cells(4, X).VerticalAlignment = xlTop
        Cells(4, X).Orientation = -90
End Sub
 
Code:
Private Sub Kolom_toevoegen_Click()
    With Cells(1, Columns.Count).End(xlToLeft)
        With .Offset(, 1)
            .Resize(2) = [B1:B2].Value
            .ColumnWidth = 2.57
        End With
        .Offset(3, 1) = [B3].Value
        .Offset(3, 1).Orientation = 90
    End With
End Sub
 
Perfect deze oplossing
Van harte bedankt, zijn weer een stapje dichter bij het einde
Dus... der komen nog vragen zelle!! hoop dat ik ook weer op jullie kan rekenen, wat deze is wel heel ingewikkeld vrees ik
Nog eens bedankt aan iedereen

JP
 
Doe eens een poging te begrijpen wat de code doet.
Gebruik geen code die je niet begrijpt.
Neem een boek over VBA systematisch door.
Lees overvloedig de hulp-funktie van de VBEditor.
Pas je ambities aan aan je competenties.
 
Je hebt volkomen gelijk... het zou nuttig zijn mij in excel te verdiepen, maar...tijd, tijd, tijd...
Ik heb excel ook maar occasioneel nodig.
Nu bood er zich een situatie aan op de school waar ik werk die met excel oplosbaar bleek te zijn en die ons massa's werk zou besparen en een perfect overzicht zou bieden voor de benadering van onze (gehandicapte) kinderen
Een Amerikaan heeft me in het verleden al heel vaak geholpen en was nu ook gestart.
De man is echter van de aardbol verdwenen (hopelijk niet door mij)
Ik zit dus met onafgewerkte code, waar ik kop nog staart aan krijg
Ik zit met zeurende collega's die gebrand staan de toepassing te gebruiken. Ze zagen al een voorproefje en waren wel erg enthousiast
Ik zit met te weinig tijd om mezelf in de materie in te werken
Dus, zijn mensen als jullie mij wel erg belangrijk...
Hopelijk begrijp je mijn situatie, maar zo heeft iedereen wel een uitleg klaar denk ik dan

Toch bedankt
JP
 
Warm bakkertje:

Je code werkt perfect maar als ik de code van je voorganger gebuirk wordt de layout van de cellen ernaast meegecopieerd.... da's wel handig
Zijn code gaf voor de eerste rij ## ipv het correcte cijfer. Maakte ik de kolom breder dan werd de waarde wel getoond...
raar, alle, voor mij toch

Heb je nog een idee, laat het maar horen.

Bedankt
JP
 
Heb je nog een idee, laat het maar horen.

Hallo,

Hier nog een tip.
Met de functie AutoFit wordt de breedte van de kolom aangepast aan de inhoud van de cellen. Dus het maakt nu niet meer uit hoe groot het getal in B1 of B2 is, de kolombreedte wordt tijdens de macro juist ingesteld. (geen ### meer in je cellen)

Met vr gr
Jack
Code:
Private Sub Kolom_toevoegen_Click()
  X = Cells(1, Columns.Count).End(xlToLeft).Column + 1
    With Cells(1, X)
        .Offset() = [B1]
        .Offset(1) = [B2]
        .Offset(3) = [B3]
        .Offset(3).VerticalAlignment = xlTop
        .Offset(3).Orientation = -90
    End With
        Columns(X).AutoFit
End Sub
 
Hey Jack... bedankt voor je reply

Het rare is dat, als ik jouw code gebruikte ik die ## kreeg
gebruikte ik de code van "warme bakkertje" dan kreeg ik die ## helemaal niet en het ging over dezelfde referentie-cel en dezelfde waarde erin...
bestudeer dan maar eens jullie code als leek :confused:

JP
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan