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

Macro starten dmv link

Status
Niet open voor verdere reacties.

Joete

Gebruiker
Lid geworden
19 sep 2008
Berichten
87
Ik wil in een excel document een macro starten door op een link te klikken.
Een hyperlink invoegen lukt me nog wel. De macro aanmaken is ook geen probleem. Een knop aan de macro hangen ook niet, maar ik heb een hekel aan die lelijke knoppen dus ik wil gewoon een tekst-linkje hebben.

Het doel is dus om een linkje te hebben staan in een rij met de tekst: "Rij toevoegen"
Door daar op te klikken moet dan de reeds aangemaakte macro gestart worden die de huidige rij kopieerd en er onder invoegd. Heb namelijk allemaal formules in de rijen staan.

Is dit mogelijk? Zo ja, hoe?
 
Ik wil in een excel document een macro starten door op een link te klikken.
Een hyperlink invoegen lukt me nog wel. De macro aanmaken is ook geen probleem. Een knop aan de macro hangen ook niet, maar ik heb een hekel aan die lelijke knoppen dus ik wil gewoon een tekst-linkje hebben.

Het doel is dus om een linkje te hebben staan in een rij met de tekst: "Rij toevoegen"
Door daar op te klikken moet dan de reeds aangemaakte macro gestart worden die de huidige rij kopieerd en er onder invoegd. Heb namelijk allemaal formules in de rijen staan.

Is dit mogelijk? Zo ja, hoe?

ik denk dat je best een figuur tekent, een tekstbox, daarin de link kopieer,en aan de textbox de macro toewijst (je kan die tekstbox transparant maken he)
 
Maar dan krijg je hem niet netjes in de cel...alsnog een verplaatsbaar geval, net als de knop...

Is het anders echt niet mogelijk???
 
Kun je mij uitleggen hoe dit werkt? Snap er nog weinig van...begin net een beetje met macro's en dergelijke...
Als ik het goed zie moet de aan te klikken cel opgegeven zijn (of zie ik dit verkeerd?). Dit is bij mij steeds variabel en op meerdere cellen van toepassing.


@zapatr:
Wel netjes er in geplakt, lijkt idd net of het in de cel staat. Maar het probleem waar ik dan tegen aan loop is dat mijn macro de geselecteerde regel kopieerd. Met behulp van deze tekstvakken klik ik dus nog geen cel aan en kan het dus zijn dat er x-aantal regels hoger een regel gekopieerd wordt...
 
Het kan ook gewoon, rechttoe rechtaan met een hyperlink. Zie de bijlage.
 

Bijlagen

  • 0_hyperlink start macro.xls
    18 KB · Weergaven: 234
Joete,
Je zult een knop moeten hebben (of een tekst zoals in mijn voorbeeld, maar dat is ook een knop), of een hyperlink, om opdracht te geven tot invoegen van een rij. Als het een knop is, dan kun je die ofwel in het werblad plaatsen, ofwel bovenaan in een werkbalk. Door er op te klikken kun je dan een rij invoegen onder de cel die op dat moment geselecteerd is.
Let wel: als de knop in het werkblad staat, dan hoeft die niet per se in de rij te staan waar er een rij ingevoegd moet worden (tenzij je dit wel wenst natuurlijk). Via een vba-opdracht kun je bepalen dat de knop NIET meegekopieerd wordt (een hyperlink wordt wel meegekopieerd, maar die kun je via vba ook wissen).
 
@snb:
OK, dat werkt heel mooi!
Heb ff gekeken naar die code, vraag me af welke codes ik moet gebruiken om de huidige regel te kopieren en onder de huidige regel te plakken...
En waar moet ik die code inplakken? Staat niet bij het normale "macrolijstje" (modules)...

@zapatr:
Die hyperlink wil ik graag, maar die krijg ik dus niet voor elkaar...
 
Laatst bewerkt:
Heb ff gekeken naar die code, vraag me af welke codes ik moet gebruiken om de huidige regel te kopieren en onder de huidige regel te plakken...
Dat hangt er vanaf wat je onder de huidige regel verstaat.
Op het moment dat je op de hyperlink klikt, is nl. de rij waarin de hyperlink staat de "huidige regel". Moet de hyperlink (of een tekst zonder hyperlink, want een hyperlink is daarvoor niet nodig) in de rij staan die gekopieerd gaat worden? Of juist niet? Als die hyperlink (of gewone tekst) niet in dezelfde rij staat als die welke gekopieerd gaat worden, dan zal er via een inputbox gevraagd moeten worden welke rij gekopieerd moet worden, dat is nogal omslachtig.

Bij een knop (zoals in mijn vb.) heb je dat probleem niet. Daar kun je bv. cel B20 selecteren en als je dan op de knop klikt (waar in het werkblad die ook staat), wordt onder rij 20 een rij ingevoegd (en indien gewenst de formules gekopieerd). Staat niet B20 maar bv. H40 geselecteerd, dan wordt er door een klik op de knop onder rij 40 een rij bijgevoegd.

Je moet dus even goed nadenken en bepalen wat je wenst.
Een oplossing is dan niet zo moeilijk.
 
Ok, zal proberen zo goed mogelijk uit te leggen wat de bedoeling is.

Allereerst een uitleg wat ik aan het maken ben.

Ik ben bezig met een systeem in Excel om voor het bedrijf waar ik werk snel een raming op te kunnen zetten voor wat iets gaat kosten. In dit systeem wil ik gebruik maken van rekenmodules, of te wel daar kunnen de dimensies van een voorwerp/voorwerpen ingevuld worden wat vervolgens automatisch doorgerekend word in een totaal per regel en uiteindelijk een totaal van alle regels. Voor die totalen gebruik ik dus formules en om te voorkomen dat mensen die formules zelf gaan proberen te kopieren/wijzigen bescherm ik die cellen. De regels moeten dus door 1 druk op de knop gekopieerd kunnen worden zodat degene die het systeem invult meerdere regels kan gebruiken om op een eind totaal uit te komen.

Tot zover wat ik aan het maken ben.

Nu wat er dus moet gebeuren.

Achter iedere regel waar hoeveelheden ingevuld mogen/kunnen worden moet een link komen te staan om een regel daaronder in te kunnen voegen. Het is idd de bedoeling dat de rij waarin de link staat in zijn geheel gekopieerd wordt (liefst nog zonder data, maar dat moet met de macro te doen zijn volgens mij)

Wat je omschrijft van de te selecteren cel waaronder dan een rij ingevoegd wordt heb ik idd al. Dit is juist niet de bedoeling omdat men hier ook een cel buiten de in te vullen rekenmodule kan selecteren, hierdoor wordt er onnodig een rij ergens ingevoegd, of te wel, er moet altijd opgelet worden welke rij geselecteerd staat en aangezien bij mij op het werk niet de beste computerwonders werken lijkt mij dat niet verstandig... :D

Hoop dat het zo duidelijk is.
 
Dat kan eenvoudig met:

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  If Target.Range.Column = 5 Then Target.Range.EntireRow.Copy Rows(Target.Range.Row + 1)
End Sub

Zie ook de bijlage

NB. de macro staat in de Module Blad1
 

Bijlagen

  • 0_hyperlink start macro.xls
    18 KB · Weergaven: 89
Laatst bewerkt:
De oplossing van snb lijkt mij een goede mogelijkheid.
En wil je die zonder hyperlink, dan kan dat bv. zo:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
....
End sub
dus door op de tekst (geen hyperlink zijnde) te dubbelklikken.
Ook mogelijk om een rij in te voegen door de cel met tekst te selecteren (Private Sub Worksheet_Change...), maar dat zal vaak ongewenst invoegen van rijen tot gevolg hebben denk ik en is dus niet aan te bevelen.

Enerzijds schrijf je (in je eerstebericht) dat je een macro wil "die de huidige rij kopieert en er onder invoegt" en anderzijds (in je laatste bericht) dat je wil "dat de rij in zijn geheel gekopieerd wordt, liefst zonder data..." Dat vind ik onduidelijk, maar als het het laatste is, dan moet de macro dus enkel een lege rij invoegen (?).
 
Oplossing van snb is idd wat ik zoek, alleen plakt die de rij er in ipv tussen te voegen. Als ik dus op een link klik waar al een regel onderstaat, dan plakt ie het daar gewoon overheen...

Denk dat een link wel wat duidelijker is dan gewone tekst, dus dat is naar mijn idee de beste oplossing.

De huidige regel moet idd gekopieerd worden, in die regel kan al data ingevuld zijn en daar staat standaard, in de TOTAAL kolom een formule. Die formule wil ik houden, de data mag gewist worden. Maar dit heb ik zelf met mijn macro al voor elkaar gekregen, dus daar hoeven jullie je niet meer druk om te maken.

Nog een vraagje: Is er een website waarop alle VBA-codes uitgelegd worden? Denk dat ik nu al heel wat heb gekregen van jullie waar ik mee verder kan. Maar dan zou het handig zijn als ik zelf weet wat die codes doen en betekenen zodat ik die toe kan gaan passen.

Super bedankt tot zover!
 
Ja, die staat op jouw computer (VBEditor, hulpfunktie).
 
Ik kom er toch echt niet uit...maar goed, ik ga het wel op een andere manier oplossen. Gewoon de snel-codes (ctrl+letter), moeten ze maar leren de goede cel te selecteren...

Nog even een andere vraag als het mag (of kan ik dan beter een nieuw topic aan maken?):
Ik heb nu deze code:
Code:
Sheets("(I)Project").Select
    ActiveCell.Rows("1:1").EntireRow.Select
    ActiveCell.Offset(0, 5).Activate
    ActiveCell.Formula = "=" & nieuw & "!I8"
    ActiveCell.Offset(0, 2).Activate
    ActiveCell.Value = "(RM)"
Hiermee selecteer ik dus het juiste blad, de juiste rij en activeer ik de juiste cellen waarin ik een koppeling maak naar een cel in het werkblad die ik in de code voor deze heb aangemaakt.

Nu wil ik dat de laatste cel, waarin ik (RM) plaats, meteen een link vormt naar het zojuist aangemaakte werkblad (niet specifiek naar een cel, maar gewoon algemeen naar het werkblad, cel A1 zeg maar)

Vervolgens wil ik een cel erachter (Offset(0, 1)) een controle hebben die kijkt of cel I8 van het net aangemaakt werkblad gelijk is aan de inhoud van de cel die ik op mijn basis-werkblad heb (ActiveCell.Formula = "=" ......"). Is dit gelijk, dan moet ik "OK" weergeven, anders "Error".
Zat te denken aan een gewone ALS-formule, maar het probleem is dat de cellen variabel zijn.

Enig idee hoe ik dit kan doen?

Hoop trouwens dat het een beetje duidelijk is...
 
Problemen zijn opgelost. Na lang puzzelen, proberen en macro's opnemen is het gelukt om (volgens mij wel omslachtig...) een oplossing te maken.

heb nu de volgende code (mocht iemand daar nog belang bij hebben of kunnen verbeteren):
Code:
Sub Rekenmodule()
'
' Rekenmodule Macro
'
' Sneltoets: CTRL+r
'
Dim nieuw As String
nieuw = "RM_1"

Sheets("RM_").Copy After:=Sheets(Sheets.Count)
Sheets("RM_ (2)").Visible = True
Sheets("RM_ (2)").Name = nieuw

Sheets("I_project").Select
    ActiveCell.Rows("1:1").EntireRow.Select
    ActiveCell.Offset(0, 1).Select
    Selection.Copy
Sheets(nieuw).Select
    Range("A2:I2").Select
    ActiveCell.PasteSpecial
    Application.CutCopyMode = False

Application.ScreenUpdating = False
    
Sheets("I_Project").Select
    ActiveCell.Rows("1:1").EntireRow.Select
    ActiveCell.Offset(0, 4).Activate
    ActiveCell.Formula = "=" & nieuw & "!I8"
    ActiveCell.Offset(0, 2).Select
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "'" & nieuw & "'!A1", TextToDisplay:="Rekenmodule"
    ActiveCell.Offset(0, 2).Select
    ActiveCell.Formula = "=" & nieuw & "!I8"
    ActiveCell.Offset(0, -1).Select
    ActiveCell.Formula = "=IF(RC[-5]=RC[1],""OK"",""Fout"")"
          
Sheets(nieuw).Select
End Sub

Een ieder bedankt voor de reacties en het meedenken/adviseren/geven van oplossingen!
 
Vermijd select en activate in VBA-code.
 
Hoe zou ik dat kunnen doen en wat is de reden daarvoor?
Ik moet toch een bepaalde cel copieren/invullen, dan moet ik toch een cel geselecteerd hebben? Of zie ik dat verkeerd?
 
Hoe zou ik dat kunnen doen en wat is de reden daarvoor?
Ik moet toch een bepaalde cel copieren/invullen, dan moet ik toch een cel geselecteerd hebben? Of zie ik dat verkeerd?
Ja.
Om met vba bewerkingen op cellen uit te voeren, hoef je ze nl. niet te selecteren.

Onderstaand gedeelte begrijp ik niet goed:
Code:
 ActiveCell.Rows("1:1").EntireRow.Select
    ActiveCell.Offset(0, 1).Select
1e regel: Wat is het nut van rij 1 te selecteren?
2e regel: Welke cel door die opdracht geselecteerd wordt, hangt af van het feit welke cel vóór de actie geselecteerd is.
Is dat op voorhand bekend en zeker?
Indien niet, dan heeft die actie geen zin.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan