Help!

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

Hulp bij posten

Recente topics

Auteur Topic: probleem met MsgBox  (gelezen 14203 keer)

0 leden en 1 gast bekijken dit topic.

Offline flipper52

  • Ervaren lid
  • ***
  • Berichten: 297
  • Geslacht: Man
probleem met MsgBox
« Gepost op: 18 september 2014, 18:36:20 »
In heb deze code ingebracht, in de hoop dat wanneer het bedrag in cel "H12" veranderd (en alleen in deze cel), er een MsgBox verschijnt.
Maar ergens doe ik iets fout, want wanner ik in een ander cel bv "H33" een getal inbreng dan verschijnt de MsgBox ook, en dat is niet de bedoeling.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Range
For Each x In ActiveSheet.Range("H12")
With x
Select Case .Value
Case 0 To 49
MsgBox vbCrLf & "Dit kan beter"
End Select
End With
Next
End Sub

 
Standaard emailprogramma: Microsoft Outlook 2010
Standaard Operating System: Windows 7 Home 64-bits
Standaard Browser:Internet Explorer 9
Microsoft Office 2010

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #1 Gepost op: 18 september 2014, 21:55:55 »
Dag Flipper,

De bovenstaande procedure wordt opgeroepen bij elke verandering van de worksheet. Wat je wil doen is Target controleren (je krijgt mee welke cellen er aangepast geweest zijn) en nagaan of het om cel H12 gaat die aangepast is :).

Dit kan je door met de procedure Intersect() te controleren of Target en je beoogde cel (H12) elkaar doorkruisen.
Deze Microsoft KB is voor Office 2007, maar ik vermoed dat de code ook bruikbaar is: https://support.microsoft.com/kb/213612 . Laat je iets weten of je er aldanniet verder mee kan?

Groetjes

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: probleem met MsgBox
« Reactie #2 Gepost op: 19 september 2014, 06:22:08 »
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Range
    Set x = Range("H12")
    Select Case x.Value
        Case 0 To 49
            MsgBox "Dit kan beter"
    End Select
End Sub
X was gewoon niet gedefinieerd?
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline flipper52

  • Ervaren lid
  • ***
  • Berichten: 297
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #3 Gepost op: 19 september 2014, 08:14:02 »
Beiden bedankt voor jullie reactie.

Reactie aan Firebirdy, heb de link bekeken en toegepast, maar was niet het gewenste resultaat.

Reactie aan dizzl, jou code moet ik nog toepassen, maar ik heb ondertussen ook een werkende code gevonden.
Zoals je zult gezien hebben wordt in cel "H12" de som berekend, dus heb ik deze code eens getest

Private Sub Worksheet_Calculate()
Dim x As Range
For Each x In ActiveSheet.Range("H12")
With x
Select Case .Value
Case 0 To 50
MsgBox vbCrLf & "Dit wordt al beter!"
 End Select
 End With
 Next
End Sub

bij de eerste testen werkte het goed.
Standaard emailprogramma: Microsoft Outlook 2010
Standaard Operating System: Windows 7 Home 64-bits
Standaard Browser:Internet Explorer 9
Microsoft Office 2010

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: probleem met MsgBox
« Reactie #4 Gepost op: 19 september 2014, 18:07:11 »
For Each x In ActiveSheet.Range("H12")
Betekent voor alle rangen in de cel H12 sja er is er maar één. Dat vind ik wat overkill?

Set x = Range("H12")Betekent stel een range x zo groot als (de ene cel) H12

Als het maar werkt? Een beetje filosoferen doet leren.
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #5 Gepost op: 19 september 2014, 18:34:53 »
Flipper52,

Zelfs zonder je code uit te proberen valt het onmiddellijk op dat, ook met je laatste code, je msgbox ook zal verschijnen als je eender waar een formule hebt staan op het moment dat die cel herrekend wordt.
Is dat niet in tegenstelling met :
in de hoop dat wanneer het bedrag in cel "H12" veranderd (en alleen in deze cel), er een MsgBox verschijnt.

Anderzijds krijg je geen msgbox als het totaal in H12 hoger is dan 50... (los van de vraag of H12 of een andere cel herrekend wordt).
Een beetje vreemd, maar misschien heb je het wel zo bedoeld  0:-)

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline flipper52

  • Ervaren lid
  • ***
  • Berichten: 297
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #6 Gepost op: 19 september 2014, 20:58:19 »
pitufo,

Je hebt volkomen gelijk, maar ik ben VBA nog aan het leren.
Ik heb de code van dizzl ingebracht in mijn bestand, maar zit nog altijd met het zelfde probleem.
Als ik in een andere cel een getal in breng, gelijk waar in het blad, dan verschijnt de msgbox ook.
Hoe is dit te verhelpen.

Ik begrijp ook je vraag i.v.m. als "H12" hoger is dan 50, moet er dan geen msgbox verschijnen.
jawel, maar dat zal ik inbrengen nadat dit probleem is verholpen.

De bedoeling is om dit te gebruiken in een bestand voor de lotto.
Als je wil dan plaats ik dit bestand.

Groeten, Rudy
Standaard emailprogramma: Microsoft Outlook 2010
Standaard Operating System: Windows 7 Home 64-bits
Standaard Browser:Internet Explorer 9
Microsoft Office 2010

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: probleem met MsgBox
« Reactie #7 Gepost op: 19 september 2014, 21:58:09 »
ik dacht dat dat ook de bedoeling was?
H12 is afhankelijk van andere cellen toch.
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #8 Gepost op: 19 september 2014, 22:57:45 »
Hoi,

Bij gebruik van worksheet_change zal inderdaad de msgbox verschijnen bij elke wijziging op het werkblad (mits aan de voorwaarde H12 tussen 0 en 50 is voldaan).

Met worksheet_calculate enkel als formules herrekend worden. Stel dat je geen enkele andere formule op je werkblad zet behalve deze in H12, dan krijg je wel het gewenste resultaat, m.a.w. dan gebeurt er niets als je waar dan ook wijzigingen aanbrengt die H12 niet beïnvloeden.

Wat je met Select case en volgende regels doet is dus een analyse van de waarde die op dat moment in H12 staat maar heeft niets te maken met waar er iets gewijzigd wordt.

Stuur anders misschien inderdaad eens je lotto-bestand mee  8)

Mvg,
Pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline flipper52

  • Ervaren lid
  • ***
  • Berichten: 297
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #9 Gepost op: 20 september 2014, 00:10:28 »
hallo, pitufo

Even een woordje uitleg bij dit bestand.
De winnende lotto nummers en de winstverdeling worden opgehaald op de website van de Lotto, en deze worden opgeslagen in Blad2.
In blad1 wordt de som van de winst gemaakt in (AB20:AC20).

Dus eigenlijk zou de msgbox (werkende met de som in "AB20:AC20")moeten verschijnen na de update van de winnende lotto nummers.

Groeten, Rudy
Standaard emailprogramma: Microsoft Outlook 2010
Standaard Operating System: Windows 7 Home 64-bits
Standaard Browser:Internet Explorer 9
Microsoft Office 2010

Offline flipper52

  • Ervaren lid
  • ***
  • Berichten: 297
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #10 Gepost op: 20 september 2014, 00:15:23 »
Hallo, dizzl

H12 is inderdaad afhankelijk van de cellen "H3:H11.
Maar als ik bv. een getal inbreng in cel "k11" dan verschijnt er ook de msgbox, en dat is niet mijn bedoeling.

Groeten, Rudy
Standaard emailprogramma: Microsoft Outlook 2010
Standaard Operating System: Windows 7 Home 64-bits
Standaard Browser:Internet Explorer 9
Microsoft Office 2010

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #11 Gepost op: 20 september 2014, 09:37:03 »
Hallo Rudy,

Maar als ik bv. een getal inbreng in cel "k11" dan verschijnt er ook de msgbox

Dat is inderdaad het resultaat van wat ik je gisteren had verklaard.

Ik heb ondertussen je lotto-bestand vluchtig bekeken en daar staan inderdaad veel formules in zodanig dat we noch met worksheet_change noch met worksheet_calculate geholpen zullen zijn. Elke aanpassing in je roosters resulteert namelijk in een herberekening van je winst.

We zullen dus buiten de lijntjes moeten kleuren  8)

Ik moet er nu dringend vandoor, maar ik verzin wel iets als ik terug een momentje vrij heb.

Mvg,
Pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #12 Gepost op: 20 september 2014, 09:41:16 »
Rudy,

(zie ook mijn bericht van een minuutje of wat geleden)

Kijk nu, 'k heb ondertussen al een idee  0:-)

Als je de gegevens op blad 2 hebt ingevuld moet je terug naar blad 1. Dat is één muisklik.

Als we op blad 2 een knop zetten die we alles laten doen (terug naar blad 1, winst analyseren en msgbox) dan is dat OOK één muisklik.

Opgelost, toch ?

Mvg,
Pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline flipper52

  • Ervaren lid
  • ***
  • Berichten: 297
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #13 Gepost op: 20 september 2014, 10:23:51 »
Hallo, pitufo

Bedankt voor je reactie, maar ik vermoed dat je voorstel met een knop niet zal werken.
Daar deze gegevens in blad2 automatisch worden ingevuld door de website van de Lotto.
Met andere woorden moet ik nooit blad2 openen, noch in werken.
Ik kijk enkel in Blad1.

Of heb ik je verkeerd begrepen.

Groeten, Rudy
Standaard emailprogramma: Microsoft Outlook 2010
Standaard Operating System: Windows 7 Home 64-bits
Standaard Browser:Internet Explorer 9
Microsoft Office 2010

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: probleem met MsgBox
« Reactie #14 Gepost op: 21 september 2014, 10:43:47 »
Hallo Rudy,

Dan ben ik eerder degene die het verkeerd had begrepen : ik dacht inderdaad dat je zelf de resultaten ingaf op blad 2.
Volautomatisch komen ze daar waarschijnlijk toch ook niet terecht ??  ???

Ik neem (voorlopig) aan dat er in chronologische volgorde dit gebeurt :
1) je vult het kader in op blad 1 met alle voor één trekking gespeelde roosters
2) na de trekking wordt de uitslag (op al dan niet mysterieuze wijze) ingebracht op blad 2

Wat we tot nu aan Excel vroegen was een msgbox als de cel die je winst aangaf wijzigt of herrekend wordt. Die kan dus alleen maar te vaak worden getoond.

Meer nog : ook als we het zo ver zouden krijgen dat je enkel een msgbox krijgt die doet wat je in gedachten had kan het nog fout gaan.
Stel : "vorige" keer had je één maal 3 goede, je speelt "deze" keer dezelfde getallen, wijzigt dus niets in je bestand, en jebt terug één maal 3 goede (niet geheel onwaarschijnlijk). Conclusie : geen msgbox !

Is het m.a.w. niet veeleer zo dat je in fase 1 nooit een msgbox wil en aansluitend op fase 2 er altijd één ?

Van belang om dat te realiseren is hoe die uitslag in je bestand terecht komt.
Verklaar je dus misschien even hoe dat precies in zijn werk gaat ?

Mvg,
Pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

 


www.combell.com