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

Celwaarde in Macro ipv formule

Status
Niet open voor verdere reacties.

Dawood

Gebruiker
Lid geworden
21 mei 2006
Berichten
24
Buenas Noches,

Ik ben al de hele avond aan het klooien met iets heel simpels, maar ik krijg het niet
voor elkaar. Ik wil een command button enablen/disablen afhankelijk van de waarde in
een cel. Dit doe ik met de volgende code;

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1") = "1" Then
CommandButton1.Enabled = True
Else
CommandButton1.Enabled = False
End If
End Sub


Dit werkt echter alleen als ik het cijfer 1 in de cel plaats, en niet als er zoals
in mijn geval een formule in A1 staat waarbij twee datums van elkaar afgetrokken worden.

bijv A1=A2-A3 (28-06-06 - 27-06-06). Celwaarde A1 wordt keurig 1 ,maar Commandbutton blijft disabled.

Hoe los ik dit op??

Alvast bedankt ,

Dawood
 
Hola, buenas noches.

Raar want bij mij werkt het wel.
Heb je de volgende opties al geprobeerd:

- De aanhalingstekens verwijderen. Dus 1 ipv "1". De aanhalingstekens zijn niet nodig omdat het geen tekst is.
- Staat de commandbutton nog in Ontwerpmodus ? Dit zie als je met de rechtermuisknop op de commandbutton klikt. Als er een menu verschijnt is de commandbutton in Ontwerpmodus en werkt het niet.
 
Hallo Dawood,

Je kiest de verkeerde Event.
Wanneer de waarde in A1 wijzigt in een andere waarde door middel van een formule heb je geen change-event. Er veranderd immers niets. Kijk maar eens naar het formuletje: dit is nog net hetzelfde als daarvoor. De uitkomst zelf ja... die is anders.
Wat jij nodig hebt, is de Event Calculate. Of je moet de event Change zetten in het werkblad waar je wel zaken invoert, waardoor de uitkomst van de formule wijzigt.

Verder zou ik ook nooit vertrouwen op de standaardeigenschappen van Excel. Is wat jij dus wel doet:
If Range("A1") = 1 Then

puur logisch gezien staat daar een blunder van formaat. Range("A1") is een Range... geen getal. Dat dit toch kan werken, is omdat Excel hier standaardeigenschappen gezet heeft, die gebruikt worden wanneer die weggelaten worden. Speciaal voor luie programmeurs.
En wat als in de toekomst Microsoft 's beslist dat er goed geprogrammeert moet worden?
Dan gaan al deze code's de mist in.

Een code die dus wel zou werken, is deze:

Private Sub Worksheet_Calculate()
If Range("A1").Value = 1 Then
CommandButton1.Enabled = True
Else
CommandButton1.Enabled = False
End If
End Sub

mvg,
Luc
 
I plead guilty Luc !

Het is eventjes slikken als ik je reactie lees, maar trek het me niet al te
persoonlijk aan . Je hebt volkomen gelijk wanneer je het over luie programmeurs
hebt, waaronder ik mezelf niet zou willen scharen, maar daartussen waarschijnlijk
toch een prominente plaats inneem.

Ik heb namelijk een maand geleden voor het eerst een macro gezien en gebruikt
(zie topic HV transponeren). En sindsdien in de avond uurtjes een soort van Datalog
viewer in elkaar geknutseld. Dit voornamelijk met copy paste en het editten en
samenvoegen van andere codes gebeurd.

Daar dit alles gemaakt is zonder echt goed naar de basis van VBA programmeren te
kijken zal deze sheet wemelen van blunders van formaat en ander omslachtige codes.
Tot op heden is deze alleen nog voor eigen gebruik, en voor mij een manier om kennis
te maken met VBA en zijn mogelijkheden. Als het allemaal doet wat het moet doen,
zal ik mij rustig inlezen (best een berg) en het hele project opnieuw volgens een plan
en volgens de "regels" opzetten.

Ik denk dat het project dan geen 50 MB groot meer zal zijn, een stuk sneller zal zijn,
en geen 30 % van mijn CPU in beslag meer zal nemen. Hopelijk zullen de Pro's onder ons dan ook geen kromme tenen meer krijgen bij het bekijken van het programeer werk.

Bedankt Luc voor je uitleg en code, ik kan weer verder naar de volgende uitdaging
van mijn Datalogviewer!


Groeten Dawood.
 
Uitspraken zoals: 'Luie programmeurs' moet je zeker niet te persoonlijk nemen.
Integendeel zelfs: wie in z'n vrije uren tracht iets te maken is niet lui.
Maar het is wel de krachtigste methode om je duidelijk te maken waar het om draait.

Overigens: 50 MB lijkt me véél te groot. Allicht kan je dit een stuk verkleinen.
Ga eens naar m'n website:
http://www.newbytes.be
en haal daar via Excel => Addin's het bestand Bestandscompressie op.
Laat dit eens over je bestand gaan, en de kans is groot dat het een heel stukje kleiner is.

Lees vooral ook het eerste punt op m'n website, om de weten hoe Addin's te gebruiken.
En voor de veiligheid: houd ook een copie van je bestand afzonderlijk. Deze invoegtoepassing tracht immers je bestand te herwerken... en in uitzonderlijke gevallen zou het iets te veel kunnen verwijderen (Ik kan je precies zeggen wat ie te veel zou kunnen verwijderen... maar het is uitzonderlijk dat jouw bestand zo opgebouwd is)
Ook alle beveiliging van je werkbladen verwijderen, anders kan die invoegtoepassing z'n werk niet doen.

mvg,
Luc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan