abonnement Unibet Coolblue Bitvavo
pi_59321669
quote:
Op woensdag 11 juni 2008 18:45 schreef qu63 het volgende:
F1: =A1
F2: =F1+A2
F3: =F2+A3
F4: =F3+A4

etc.

of is dat het niet?
Dan kan ik net zo goed handmatig lales optellen Ik moet dat dan voor alle kolommen doen.
  woensdag 11 juni 2008 @ 23:12:49 #242
62215 qu63
..de tijd drinkt..
pi_59322170
quote:
Op woensdag 11 juni 2008 22:59 schreef Flaccid het volgende:

[..]

Dan kan ik net zo goed handmatig lales optellen Ik moet dat dan voor alle kolommen doen.
Als je F1 en F2 hebt gedaan kan je F2 naar beneden slepen..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_59324526
Je moet sowieso een hulpkolom maken zoals qu63 zegt om er een grafiek van te bouwen.
pi_59324870
Je kan in plaats van qu63 zijn formule ook de volgende gebruiken, die iets minder werk is:

A2 = score van wedstrijd 1 van Jeroen, F2 is cel om lopend totaal te bereken:
1=SUBTOTAL(9,B2)

Deze kan je gewoon naar beneden slepen. Omdat je er niet hebt bijgezet welke versie van Excel je hebt ga ik ervanuit dat het Engels is. Nederlands is SUBTOTAAL.

Zie http://dolf.trieschnigg.nl/excel/excel.html/.
pi_59325550
Kijk voor aardige tips op het verfraaien van je grafieken eens naar http://office.microsoft.com/en-us/excel/HP012163481033.aspx.

En probeer zelf ook eens wat, met wat rechtermuisknoppen op verschillende delen van je grafiek kan je hem al aardig oppimpen!
  donderdag 12 juni 2008 @ 08:42:58 #246
14337 BierKoning
Bier 4 Ever!!
pi_59326493
quote:
Op vrijdag 6 juni 2008 15:21 schreef DaFan het volgende:
BK:
Ik zou die in een Worksheet_change event bouwen. Elke keer als er dan iets verandert in je sheet gaat ie controleren een van de data over tijd is.
Na wat zoeken lijkt dat inderdaad een mooie optie, alleen heb ik niet zo veel kaas gegeten van VBA. Nu lijkt me een half werkende VBA minder mooi dan een goed werkende 'simpele' formule. Er vanuitgaande dat geen kritiek goede kritiek is, en het werkt aardig, dus zal hoe ik het nu heb goed zijn?

Verder heb ik nog een vraag, kan ik wanneer ik een checkbox heb aangevinkt (geen VBA) een waarde van een al ingevulde cel veranderen?

Dus:
A2 = 12/06/2008
B2 = checkbox met 2 waarden 'TRUE' en 'FALSE'

Nu wil ik maken dat wanneer de checkbox TRUE is (dus aangevinkt) dat de datum in A2 met een jaar wordt verhoogd.

Het werkt wel met lege cellen dus bijv: =IF(B2=TRUE;EDATE(A2;12)) alleen wil ik dus de begincel veranderen.

Uiteindelijk heb ik daarmee een 'loop' met 4x afvinken, en wanneer de laatste checkbox is afgevinkt, gaat het hele spul weer overnieuw.
pi_59327097
Als jij tevreden bent met een signaal in een cel, dan moet je het vooral zo laten en niet gaan kloten met VBA.

Als je checkboxes wilt gaan gebruiken moét je wel met VBA gaan werken. Je eerste vraag over de checkbox is simpel, zie mijn code hier.

Ik kan de code wel voor je schrijven als je wilt, maar dan moet je me het laatste deel nog wat beter uitleggen, want dat snap ik niet helemaal.

Kijk even of je snapt wat er gebeurt in de code die ik je gaf, en hoe je die kan aanpassen of toepassen op jouw situatie. Op de volgende manier kan je een waarde uit een cel verhogen:
1
2
3
'Je moet eerst de waarde toewijzen aan een variabele zodat VBA 'weet' wat er verhoogd moet worden.  Houdt geen rekening met schrikkeljaar trouwens, ook niet met weekenden / niet-werkdagen
Date = Worksheets("Sheet1").Range("A2").Value
Worksheets("Sheet1").Range("A2").Value = Date + 365
  donderdag 12 juni 2008 @ 10:00:09 #248
14337 BierKoning
Bier 4 Ever!!
pi_59327907
Het uiteindelijke idee is dat ik een worksheet heb, met 4 fases.

Vooraf aan de fases heb ik een 'begindatum' en de 'huidige datum'.

Fase1 = 'Signaaldatum1' 'Verloopdatum1' 'Signaal1' 'Checkdatum'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
A2:A20 = startdatum
B2:B20 = Datum nu gegenereerd met =+NOW()
C2:C20 = Signaaldatum gegenereerd met =+EDATE(A2;3)
D2:D20 = Einddatum gegenereerd met =+EDATE(A2;3)
E2:E20 = Signaal geven, aangezien dit tussen B2 en C2 moet liggen, gegenereerd met =IF(AND(D2>=B2;D2<=C2);"Signaal!!";"")
F2:F20 = Verstreken datum geven: huidige datum mag niet kleiner zijn dan einddatum, dus gegenereerd met =IF(D2>C2;"Certificaat verlopen!";"")
G2:G20 = Afvinklijst met een simpele checkbox (NU NOG GEEN VBA!!) wanneer er actie is ondernomen. 

=== START FASE 2 ===

H2:H20 = Eigenlijk hetzelfde als C2:C20, alleen dan gegenereerd met =IF(G2=TRUE;EDATE(A2;5))
I2:I20 = Zie boven..

==== Dit tot en met een laatste, vierde fase ====


Nu werkt het eigenlijk allemaal prima, maar wil ik nog een aantal dingetjes:
1) Bij de laatste checkbox, wil ik dat wanneer dit is aangevinkt, dat de startdatum wordt verhoogd met 1 jaar, en dat tevens alle checkboxen worden uncheckt. Dit zorgt er dus voor dat het hele proces weer wordt herhaalt, alleen een jaar later.
2) Als het kan, dat wanneer een checkbox wordt aangevinkt de fase ervoor wordt 'ge-hide' en dat de fase erna wordt 'ge-showt'.

Als je me een stukje de goede weg op helpt zou het super zijn!
pi_59328260
Ben nu even aan het relaxen van werk dus ik zal morgenochtend op het werk als ik tijd heb een begin maken! Het is niet te lastig dus komt wel goed.
Het is wél druk morgen dus als het niks wordt dan wordt het waarschijnlijk vrijdagavond of zaterdag (GMT+10) dus geduld
  donderdag 12 juni 2008 @ 10:20:10 #250
14337 BierKoning
Bier 4 Ever!!
pi_59328354
Nou ik vind het ook niet zo erg om het zelf uit te zoeken, als je me alleen al zou kunnen helpen aan de eerste functie (dus laatste checkbox = TRUE dan A2 = +365 dagen) dan zou ik al erg blij zijn.
pi_59329199
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Checkbox4_change
   If Checkbox3.Value = False Then
      Exit Sub
   Else
      If CheckBox4.Value = True Then
         Date = Worksheets("Sheet1").Range("A2").Value
         Worksheets("Sheet1").Range("A2").Value = Date + 365
      Else
         Exit Sub
      End If
   End if
End Sub

Zoiets zou je al een end mee moeten komen.

Ik test bij verandering van checkbox4 of Checkbox3 al aangevinkt is. Als dit niet het geval is is deze code niet relevant en Exit je dus. Dit kan je ook evt opvangen door dit in de code van Checkbox3 te proppen (en dus 1 & 2 voor 2 & 3):
1
2
3
4
5
6
7
Private Sub Checkbox3_Change()
   If Checkbox3.Value = True Then
      Checkbox4.Enabled = True
      [eventueel andere code]
   Else
      Checkbox4.Enabled = False
   End If

Je moet dan wel al in de properties van 2, 3 en 4 instellen dat ze standaard niet enabled zijn (grayed out). Dan kunnen ze ook niet aangeklikt worden als 1 nog niet klaar is.

Kijk even of je hier wat mee kan!
  vrijdag 13 juni 2008 @ 10:30:41 #252
14337 BierKoning
Bier 4 Ever!!
pi_59357619
Hey hartstikke mooi! Het met een jaar optellen werkt in elk geval erg mooi zo. Het begin is er!

Aangezien ik zelf eigenlijk geen ervaring heb met VBA, maar het toch wel aardig logisch in elkaar lijkt te steken, heb jij toevallig wat sites met commando's? Dan kan ik zelf ook wat uitproberen.

Zo ben ik nu aan het zoeken hoe ik met 1 checkbox, alle checkboxes kan un-checken op 1 RIJ. Op die manier kan je dus handmatig een soort van 'loop' genereren.
pi_59357820
Ik heb het mezelf aangeleerd op een stage, daarbij een aantal e-books gewoon gezocht via Torrents. Veel dingen van VBA zijn niet te gebruiken in Excel (zoals Timer) maar alle basiscommando's kan je al een eind mee komen.

Probeer ook eens mee te lezen op www.mrexcel.com en dan naar Messageboards...daar zitten fantastische programmeurs, en op de site zelf staan erg goede artikelen.

Wat ook goed helpt, vooral met bijvoorbeeld kopiëren/plakken, opmaak, printen, formules in cellen plaatsen etc, is de Macro recorder. Je klikt dan op Opnemen/Record, doet je ding en stopt hem dan. Je kan dan de gegeneerde code zelf bekijken. Ook daar kan je erg veel van leren al heb je vaak wel veel code (je kan het meestal een flink stuk inkorten).

Succes.
  vrijdag 13 juni 2008 @ 10:58:11 #254
14337 BierKoning
Bier 4 Ever!!
pi_59358277
Na wat prutsen kwam ik tot de volgende code:

1
2
3
4
5
6
7
8
9
Private Sub CheckBox1_Change()
    If CheckBox1.Value = True Then
        CheckBox2.Value = False
        CheckBox3.Value = False
        CheckBox4.Value = False
    Else
        Exit Sub
    End If
End Sub


Nog niet perfect, maar het is een begin! :)
pi_59358501
Gewoon prutsen, je komt er wel
Als je er niet uitkomt horen we het wel weer!
  vrijdag 13 juni 2008 @ 11:34:22 #256
14337 BierKoning
Bier 4 Ever!!
pi_59359256
Ahh kijk, weer een stap verder.

Ik had het eerst aan het werk dat ik door middel van 1 checkbox aan te vinken, alle andere checkboxjes uit-vinkte, maar dat is weer niet handig, want dan moet ik dus ook weer de checkbox die alle checkboxjes uncheckt, handmatig unchecken (mooie formulatie :D ).

Nu heb ik het dus met een commandbutton gedaan door middel van:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub CommandButton1_click()
If CommandButton1.Enabled = True Then
        CheckBox1.Value = False
        CheckBox2.Value = False
        CheckBox3.Value = False
        CheckBox4.Value = False
    Else
        If CommandButton1.Enabled = False Then
            Exit Sub
        End If
    End If
End Sub


Nu heb ik een vraag, wel een aantal stappen vooruit. Stel ik heb dit allemaal mooi aan het werk, en ik maak een nieuwe rij aan. Dan kan ik door middel van pull-down menu's de overige data mooi, netjes en snel invoeren, de relevante data invoeren enz. Maar dan kom ik tot de checkboxes en buttons. Is er ook een manier om die automatisch te genereren? Dus iets als: "wanneer een nieuwe rij wordt aangemaakt dan: "plaats een checkbox in "B4, B8, B12, B16" en een command button in "B17" met de eigenschappen van "A4, A8, A12, A17" en button "A17".
pi_59359595
Op die laatste vraag zou je even moeten Googlen, dat weet ik zo niet. Je kan wel via het change_event testen of er een nieuwe rij wordt toegevoegd, maar hoe weet ik niet. Of het überhaupt handig is dan buttons toe te voegen lijkt me ook niet, want waar haal je dan de bijbehorende code vandaan? Gewoon de boxes al maken, en de code erin kopiëren met andere namen voor de checkboxes.

Je code:
De If-statement is niet nodig. Een Commandbutton is geen Boolean (Boolean = een variabele die TRUE of FALSE is). Hij wordt aangeklikt, voer dan de code uit. Thats it.

Je kan dus volstaan met:
1
2
3
4
5
6
Private Sub CommandButton1_click()
        CheckBox1.Value = False
        CheckBox2.Value = False
        CheckBox3.Value = False
        CheckBox4.Value = False
End Sub

Daarnaast raad ik je aan zo snel mogelijk over te stappen naar het renamen van je Checkboxes (kan in de Properties onder Name) met de (volgens mij) Hungarian Notation. Dit maakt je code voor jezelf (en evt voor anderen) een stuk leesbaarder. Vaak wordt het afgeraden maar voor projecten voor mezelf ben ik er altijd erg blij mee. Zie hier voor korte uitleg. Het houdt kort in dat je bijvoorbeeld als naam gebruikt:

Voor een checkbox chkNaam
Voor een button btnNaam
etc.

[ Bericht 61% gewijzigd door DaFan op 13-06-2008 11:57:14 ]
pi_59359897
Voor goede boeken moet je eens kijken naar O'Reilly trouwens.
  vrijdag 13 juni 2008 @ 12:49:12 #259
14337 BierKoning
Bier 4 Ever!!
pi_59360938
Ik snap niet zo goed dat wanneer ik de code om een jaar bij een datum op te tellen:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Chk_1_4_Change()
   If Chk_1_3.Value = False Then
      Exit Sub
   Else
      If Chk_1_4.Value = True Then
         Date = Worksheets("Sheet1").Range("A2").Value
         Worksheets("Sheet1").Range("A2").Value = Date + 365
      Else
         Exit Sub
      End If
   End If
End Sub

Deze code zich eindeloos kan herhalen wanneer je de checkbox uncheckt en weer checkt. Telkens wordt er een jaar bij op geteld.

Wanneer ik een andere code maak om van de datum in cel A1 er 2 maanden bij op te tellen en dit te genereren in cel B1, met de code:

1
2
3
4
5
6
7
8
9
10
Private Sub Chk_A1_Change()
        If chk_A1.Value = True Then
            Date = Worksheets("Sheet1").Range("A1").Value
            Worksheets("Sheet1").Range("B1").Value = Date + 61
     Else
        If chk_A1.Value = False Then
                Exit Sub
            End If
    End If
End Sub

dit slechts 1 keer kan gebeuren. Alleen de eerste keer dat ik de checkbox aanvink wordt er netjes een nieuwe datum + 2 maanden in cel B1 geplaats. Maar wanneer ik hem uncheck en weer aancheck, gebeurd er niks meer.

Terwijl dit toch eigenlijk makkelijk zou zijn :)
pi_59361104
In de eerste code haal ik de datum uit een box die daarna met een jaar opgehoogd wordt en in de zelfde cel wordt geplaatst. Die wordt dus telkens met een jaar verhoogd.
Jouw 2e code daarentegen haalt de datum uit cel A1 en plaatst deze in B1. Als je daarna weer de datum uit A1 neemt blijft de uitkomst van Datum + 61 hetzelfde, waardoor B1 niet veranderd.

Je moet dus óf A1 in B1 veranderen of andersom.
  vrijdag 13 juni 2008 @ 13:25:25 #261
14337 BierKoning
Bier 4 Ever!!
pi_59361763
Dus ik zou eigenlijk moeten zoeken naar een code die eerst kijkt of er een waarde in B1 staat en wanneer er een code staat, dat hij die code, wanneer de checkbox wordt aangevinkt, verhoogd met 2 maanden.

Dat zal vast weer lastiger worden dan dat het lijkt
pi_59361988
Nee hoor daar heeft VBA een hele mooie functie voor, IsEmpty()
1
2
3
If IsEmpty(Range("B2")) = True Then
<je code>
End If

Nog even over If-statements, je hoéft dus niet altijd Else te gebruiken, alleen als je een actie wil ondernemen als de eerste statement niet waar is. Anders kan je gewoon afsluiten met End If.

Zie hier voor meer uitleg over ranges.
  vrijdag 13 juni 2008 @ 13:53:27 #263
14337 BierKoning
Bier 4 Ever!!
pi_59362536
Ik was inderdaad al tegen de "ifEMPTY" aangelopen. Toch doet ie niet wat ik wil.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Chk_A1_Change()
    If IsEmpty("B1") = True Then
        Date = Worksheets("Sheet1").Range("A1").Value
        Worksheets("Sheet1").Range("B1").Value = Date + 61
            Else
                Date = Worksheets("Sheet1").Range("B1").Value
                Worksheets("Sheet1").Range("B1").Value = Date + 61
                If chk_A1.Value = False Then
                        Else
                    Exit Sub
                End If
        End If
End Sub


Dit leek mij het meest logische. Alleen werkt het niet zo gemakkelijk.
Wanneer ik dit laat runnen, wanneer er al een datum in B1 staat, dan is er niks aan de hand en wordt B1 netjes met 2 maanden opgehoogd bij elke aanvink. Is B1 leeg, dan zegt hij "Type Mismatch" en geeft hij aan dat er een fout zit in de 2e "Date = Worksheets("Sheet1").Range("B1").Value".

Nu lijkt me dat dat komt omdat de cel leeg is, maar dat lost hij toch op door de eerste voorwaarde? :?
pi_59362790
In kolom A staan artikel omschrijvingen met meer dan 30 karakters. Deze mogen max. 30 karakters zijn, ik wil de inhoud van de cellen in kolom A afkappen naar 30 karakters (dat lukt nog wel), maar de karakters na het 30e karakter moeten in kolom B geplaatst worden. Dat lukt dus niet, iemand een oplossing? Kan ik een soort ALS formule maken i.c.m. karakters tellen?
Standin' around, looking cool and shit, I want y'all motherfuckers to jump the fuck up!
pi_59362827
Maak van je True eens een False?

Deze:
If IsEmpty("B1") = True Then

naar
If IsEmpty("B1") = False Then
  vrijdag 13 juni 2008 @ 14:07:06 #266
15967 Frollo
You know I am a righteous man
pi_59362867
quote:
Op vrijdag 13 juni 2008 14:03 schreef galbrecht het volgende:
In kolom A staan artikel omschrijvingen met meer dan 30 karakters. Deze mogen max. 30 karakters zijn, ik wil de inhoud van de cellen in kolom A afkappen naar 30 karakters (dat lukt nog wel), maar de karakters na het 30e karakter moeten in kolom B geplaatst worden. Dat lukt dus niet, iemand een oplossing? Kan ik een soort ALS formule maken i.c.m. karakters tellen?
Ik denk dat je sowieso met een kolom extra moet werken.
In A komt de oospronkelijke tekst, in B de eerste 30 tekens en in C de rest.

In B komt dan:
=LINKS(A1;30)

En in C:
=ALS(ISFOUT(RECHTS(A1;LENGTE(A1)-30));"";RECHTS(A1;LENGTE(A1)-30))

of (eigenlijk beter):
=ALS(LENGTE(A1)>30;RECHTS(A1;LENGTE(A1)-30);"")

[ Bericht 3% gewijzigd door Frollo op 13-06-2008 14:15:34 ]
pi_59362927
quote:
Op vrijdag 13 juni 2008 14:03 schreef galbrecht het volgende:
In kolom A staan artikel omschrijvingen met meer dan 30 karakters. Deze mogen max. 30 karakters zijn, ik wil de inhoud van de cellen in kolom A afkappen naar 30 karakters (dat lukt nog wel), maar de karakters na het 30e karakter moeten in kolom B geplaatst worden. Dat lukt dus niet, iemand een oplossing? Kan ik een soort ALS formule maken i.c.m. karakters tellen?
Dit gaat in B1. Ik kan hem alleen in het Engels, sorry, voor vertalingen moet je maar even hier kijken:
http://dolf.trieschnigg.nl/excel/excel.html
1=IF(LEN(A2)>30,RIGHT(A2,LEN(A2)-30),"Niet meer dan 30")

NL:
1=ALS(LENGTE(A2)>30,RECHTS(A2,LENGTE(A2)-30),"Niet meer dan 30")


Dit resulteert in:
1
2
abcdefghijklmnopqrstuvwxyz        Niet meer dan 30
abcdefghijklmnopqrstuvwxyzabcdef  ef

Hoop dat dit helpt.
pi_59363117
Jep het is gelukt met die formule van DaFan, die was toch iets makkelijker dan die van Frollo Beiden iig bedankt!
Standin' around, looking cool and shit, I want y'all motherfuckers to jump the fuck up!
  vrijdag 13 juni 2008 @ 14:18:37 #269
14337 BierKoning
Bier 4 Ever!!
pi_59363158
quote:
Op vrijdag 13 juni 2008 14:05 schreef DaFan het volgende:
Maak van je True eens een False?

Deze:
If IsEmpty("B1") = True Then

naar
If IsEmpty("B1") = False Then
Dan genereerd hij netjes een nieuwe datum. Alleen maakt hij geen nieuwe data aan wanneer ik daarna nog een aantal keer doorklik. Verplaats ik de code ook omhoog (wissel ik het om) dan krijg ik hetzelfde als wanneer ik hem op True heb staan (is ook logisch).

pi_59363433
Heb je A1 en B1 als datum geformat of als custom?
Je moet B1 hetzelfde hebben als A1. Ik denk dat B1 als String oid wordt gezien, die kan je niet toewijzen via .Value (moet met .Text, maar dat is hier niet relevant).
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')