Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Macro starten  (gelezen 9643 keer)

0 leden en 1 gast bekijken dit topic.

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Macro starten
« Gepost op: 11 december 2020, 11:36:47 »
Hallo,

Is het mogelijk door op iedere willekeurige cel in blad1 te klikken, macro1 te starten?

Frans

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.275
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Macro starten
« Reactie #1 Gepost op: 11 december 2020, 11:52:02 »
Met een enkele klik zou ik dit niet adviseren, want dan wordt je helemaal gek. Er zijn diverse events die je kan gebruiken in een sheet om een macro te starten. Maar dan moeten we weten wat je doel is wat je wilt bereiken.

Als het echt met klikken moet gebeuren, zou je dit event met een dubbele klik kunnen gebruiken (heb er even een klein voorbeeldje van gemaakt)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox "Hallo"
    Cancel = True
End Sub
______________________________

Groet, Leo

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #2 Gepost op: 11 december 2020, 14:21:52 »
Leo,

Ik heb in blad1 in kolomB een x aantal keer het getal 100, een x aantal 200, etc etc.
Nu is het de bedoeling als ik op 100 klik, de macro kijkt hoe vaak 100 in de kolom staat.
Dit is bv 10 keer.
Op blad2 staat dezelfde getallen, slecht 1 keer.
De macro moet nu op blad2 het getal 100 zoeken en in de cel rechts naast 100 het gevonden getal 10 plaatsen.

Ga ik terug naar blad1 en klik dam op 200 dan zou dezelfde handeling moet gebeuren.

Echter de macro die ik nu hebt springt dan vanuit elke willekeurige cel automatisch weer naar B4 waar het getal 100 staat.

Zie voorbeeld in bijlage

Frans

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.275
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Macro starten
« Reactie #3 Gepost op: 11 december 2020, 19:43:57 »
Kan je naast die getallen op blad 2 niet simpeler de CountIf / Aantal.Als functie gebruiken?
Dus de waarde 100 in cel A1 van blad 2 geeft dan de volgende formule in cel B1...
=countif(blad1!B:B;A1)In mijn idee is een macro hier overkill?

[EDIT] daarnaast zijn dan voor al je waardes in blad 2 alle tellingen actueel waardoor je nooit foute interpretaties kan maken.
______________________________

Groet, Leo

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #4 Gepost op: 13 december 2020, 00:50:21 »
Ik krijg nu middels de formule:  =AANTAL.ALS(Blad2!A:A;Blad1!I2)
de juiste gegevens van blad2 kolom A,  in blad1 kolomI.

Blad2 mag verwijderd worden, omdat daar iedere keer nieuwe gegevens in komen.

Wis ik blad2 leeg dan worden alle gegevens in Blad1 kolomI 0(nul)

Verwijder ik blad2 geheel dan zijn ook alle formules weg in blad1
en komt er "#VERW!" in de cellen te staan.

Wat ik nu denk dat goed is om eerst alleen blad1 te bewaren en dan pas blad2 te wissen.

Maar hoe bewaar ik alleen blad1?

Frans

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Macro starten
« Reactie #5 Gepost op: 13 december 2020, 11:29:33 »
Hallo Frans1949,

als je de gegevens op Blad1 wilt bewaren als data, niet als formules dan kan je dit via kopiëren, Plakken Speciaal (Waarden plakken) als volgt:

Selecteer op blad1 alles met Ctrl + A
Kopieer (met de knop Kopiëren of met Ctrl + C)
Klik nu op de knop Plakken in het lint en kies voor Waarden plakken
Nu blijven de data op Blad1 behouden, ook als je blad2 verwijderd of leegmaakt.

Is het dat wat je wil?

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #6 Gepost op: 14 december 2020, 00:40:39 »
Zoiets moet het wel worden.
Ik ben ermee bezig.

FRans

Offline Warme bakkertje

  • Volledig lid
  • **
  • Berichten: 215
  • Geslacht: Man
Re: Macro starten
« Reactie #7 Gepost op: 15 december 2020, 10:05:58 »
Als ik je vraag correct interpreteer lost deze simpele code je probleem toch op.

Met 1 klik op de knop krijg je voor alle getallen in kolom I de resultaten van Blad2!KolomA.

Sub tst()
    With Blad1
        For Each cl In .Range("I2", .Range("I" & .Rows.Count).End(xlUp))
            If cl.Value <> vbNullString Then
                cl.Offset(, 1) = Evaluate("=countif(Blad2!A:A," & cl.Value & ")")
            End If
        Next
    End With
End Sub

Windows 10 Home   NLD 64bit

Microsoft Office Professional Plus 2016 US

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #8 Gepost op: 15 december 2020, 11:29:31 »
Hallo Warme bakkertje,

Dit zou mooi zijn, alleen in mijn eigenlijke bestand werkt het niet.
In jouw aangepaste voorbeeld wel.

In mijn eigenlijke bestand staat alles ook op blad1 in kolom I en in blad2 in kolom A.

cl.Offset(, 1) =.... heb ik veranderd in cl.Offset(, 2) = ....omdat het resultaat in kolom K behoort te komen staan.
Maar met cl.Offset(, 1) = werkte het ook niet, hoewel kolom J ook leeg is.

Enig idee waar het nog fout kan gaan?
Frans

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #9 Gepost op: 15 december 2020, 11:55:10 »
Ik zie nu dat de gegevens in kolom K op blad2 leeg wordt gemaakt, met cl.Offset(, 2) = ....?

Frans

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #10 Gepost op: 15 december 2020, 13:08:20 »
Wat is er dan verkeerd aan deze code?

Frans

Sub tst()
    With Blad1
        For Each cl In Blad1.Range("I2", .Range("I" & .Rows.Count).End(xlUp))
        ''Dit behoren toch de gegevens van blad1 kolom I te zijn?
        ''Bij uitvoeren tot cursor staan daar de gegevens van blad2 kolom I en niet van blad1 kolom I
       
            If cl.Value <> vbNullString Then
              cl.Offset(, 2) = Evaluate("=countif(Blad2!A:A," & cl.Value & ")")
            End If
        Next
    End With
End Sub

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Macro starten
« Reactie #11 Gepost op: 15 december 2020, 13:47:59 »
Wat is er dan verkeerd aan deze code?

Sub tst()
    With Blad1
        For Each cl In Blad1.Range("I2", .Range("I" & .Rows.Count).End(xlUp))
             
            If cl.Value <> vbNullString Then
              cl.Offset(, 2) = Evaluate("=countif(Blad2!A:A," & cl.Value & ")")
            End If
        Next
    End With
End Sub

Je code zegt:
With Blad1
 For Each cl In Blad1.Range .....

Je code zou al zeker moeten beginnen met:
With Blad1
 For Each cl In .Range .....

Verder heb ik niet gekeken omdat ik het topic niet echt meer volg.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #12 Gepost op: 15 december 2020, 14:00:25 »
Softaid,

Blad1 in die regel had ik zelf toegevoegd om te kijken wat er gebeurd, dat was dus niet correct.

Ik hoop nu wel de oorzaak gevonden te hebben. De code van bakkertje werk nu wel.
Ik heb mijn blad1 en 2 in een nieuw werkmap gekopieerd en de code van bakkertje erin geplaatst.
Het werkt nu wel.

Kan het zijn dat ik de naam van blad1 gewijzigd had in VOORBEELD en later is de naam VOORBEELD weer terug veranderd in blad1.
Zodat de code blad1 niet meer ziet als blad1?
Frans

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Macro starten
« Reactie #13 Gepost op: 15 december 2020, 14:52:27 »
Hallo Frans,

Blad1! is het originele Blad1 van Excel

Als je de naam van het blad wijzigt, dan is dat blad nog steeds blad1, maar met een andere naam.
Verander je de naam naar Blad1, dan is dat een naam van Blad1! en wordt gezien als een naam, niet als een object.

je moet dan (volgens mij)  "Blad1"  tussen haakjes gebruiken.

Een object niet tussen haakjes, de naam van een object wel tussen haakjes.

Tot zo ver mijn beperkte kennis.

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Frans1949

  • Lid
  • *
  • Berichten: 64
  • Geslacht: Man
  • Oplossing.be
Re: Macro starten
« Reactie #14 Gepost op: 15 december 2020, 15:07:42 »
Je was me net voor.

With Blad1 veranderd in: With Sheets("VOORBLAD PW")

Dit probleem opgelost.

Allen bedankt voor het meedenken.

Frans

 


www.combell.com