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

Positie van een opdracht knop bepalen

  • Onderwerp starter Onderwerp starter EfBe
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

EfBe

Gebruiker
Lid geworden
15 dec 2008
Berichten
45
Met volgende code creër ik een bedieningsknop, koppel er een macro aan en wil die knop plaatsen achter de laatste cel op de eerste rij.
Ik probeer de positie te bepalen aan de hand van de kolombreedte van de voorgaande kolommen..
Indien laatste kolom (10 of "J") is de positiebepaling perfect. Hoe meer kolommen er zijn hoe meer de knop opschuift naar links, maak kolom (100 of "CV") als laatste kolom.
Zie bijlage.
Code:
Sub Helpmij()
With ActiveSheet
    'Als opdrachtknop reeds bestaat dan verwijderen
    For Each Shp In ActiveSheet.Shapes
        Shp.Select
        If Selection.Characters.Text = "Plaats knop" Then Shp.Delete
    Next Shp

    'Positie bepalen
    Kolom = .Cells(1, .Columns.Count).End(xlToLeft).Column
    Positie = 0
    For I = 1 To Kolom
        Positie = Positie + .Columns(I).ColumnWidth
    Next I
    Positie = Positie * 5.55

    'Opdrachtknop toevoegen
    .Buttons.Add(Positie, 36, 70, 30).Select '(Links, Top, Breedte, Hoogte)
    '.Buttons.Add(794, 36, 70, 30).Select
    Selection.OnAction = "HelpMij"
    Selection.Characters.Text = "Plaats knop"

    Application.Goto .Cells(1, Kolom + 1)
End With
End Sub
 

Bijlagen

Ik begrijp niet precies wat je bedoelt, maar doe Positie eens zo:
Code:
    [COLOR="#008000"]'Positie bepalen[/COLOR]
    Kolom = .Cells(1, .Columns.Count).End(xlToLeft).Column
 [COLOR="#008000"]   'Positie = 0
    'For I = 1 To Kolom
    '    Positie = Positie + .Columns(I).ColumnWidth
    'Next I[/COLOR]
    Positie = Cells(ActiveCell.Row, Kolom + 1).Left + 4
 
@Edmoor Super bedankt, dat werkt en is inderdaad wat ik probeerde te bereiken.

@Emields, ik heb geen probleem om dat zelf te verplaatsen, de gebruiker moet in de laatste kolom gegevens bijvoegen en bevestigen met de nieuw aangemaakte knop.
Daarom verwijder ik de bestaande knop, die bvb actueel in kolom "K" staat, en de gebruiker moet in de 50ste kolom gegevens aanvullen. Die knop schuift nu telkens mee naar rechts, na elke bevestiging.
 
je kan een knop ook onzichtbaar maken en op het gepaste ogenblik verplaatsen en weer zichtbaar maken.
Dat gaat sneller en eenvoudiger.
 
@efbe ik bedoelde ook niet hem zelf verplaatsen, maar de bestaande knop verplaatsen.
 
Je kunt ook kolom A vast zetten en dan de knop in kolom A zetten.
Dan is hij altijd zichtbaar en kun je hem gebruiken wanneer en waar je maar wilt.
 
Emields, ik wil dit wel gebruiken heb het volgende getest, maar dit lukt niet.
Ik wil bvb 20 kolommen naar rechts springen.
Code:
Selection.ShapeRange.IncrementLeft .Cells(1, 20).Left
 
wat moet de knop nu eigenlijk doen? naar de laatste cel gaan of 20 cellen opschuiven
 
@emields, het plaatsen van die toets is het laatste punt van een programma. Die toets moet altijd komen achter de laatste kolom. Het kan voorkomen dat die toets in kolom 562 staat, na het uitvoeren van het programma moet de toets naar kolom 584 verplaatst worden, het kan eveneens voorvallen dat de toets in kolom 11 moet komen.
De oplossing die door edmoor werd aangegeven in #2 doet perfect wat ik zocht. Ik verwijder eerst die toets en plaats deze dan terug op de nieuwe positie.
In #3 geef je aan om die toets te verplaatsen, gewoon uit interesse wil ik dat eens testen.
 
blijkbaar begrijp je het niet.
Een macro "Verplaatsen" waarin je zegt dat die knop zichtbaar of onzichtbaar moet zijn en in geval van zichtbaar in welke cel.
Dan 2 test-macros, de ene voor een zichtbare knop, de andere om hem te verbergen.
Dan moet je dat geknoei van een knop opnieuw aanmaken niet meer doen.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan