abonnement bol.com Unibet Coolblue
  woensdag 25 juni 2008 @ 10:28:27 #26
14337 BierKoning
Bier 4 Ever!!
pi_59670210
Ok ik heb een nogal vervelend probleem nu.

Ik ben weer bezig gegaan met VBA en opzich gaat het niet slecht. Op 1 puntje na.. :?

Wanneer ik de volgende code gebruik:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Checkbox1_Change()
        If CheckBox1.Value = True Then
            Date = Worksheets("Sheet1").Range("H2").Value
            Worksheets("Sheet1").Range("H2").Value = Date + 152
            Date = Worksheets("Sheet1").Range("I2").Value
            Worksheets("Sheet1").Range("HI").Value = Date + 183
                Else
                 If CheckBox1.Value = False Then
                        Exit Sub
                    End If
            End If
End Sub

Telt hij netjes 152 dagen bij H2 op en 183 dagen bij I2. So far so good.

Alleen telt hij ook 183 dagen bij de computerdatum op :? Dit is binnen excel een probleem (ik heb de computerdatum nodig) maar het is ook gewoon algemeen onhandig als je computerdatum +10 jaar is (door het testen) :P

Weet iemand hoe dit komt?
pi_59670524
Wat is 't verschil tussen deze 2 formules, als je geen filter hebt aanstaan?
1
2
=SUBTOTAAL(2;data100!G:G)
=AANTAL(data100!G:G;2)

Er zit exact 1 verschil in (52.204 vs 52.205).

edit - opgelost, die 2 in de 2e formule was blijkbaar nergens voor nodig

[ Bericht 17% gewijzigd door PietjePuk007 op 25-06-2008 11:34:26 ]
Op maandag 30 november 2009 19:30 schreef Ian_Nick het volgende:
Pietje's hobby is puzzelen en misschien ben jij wel het laatste stukje O+
  woensdag 25 juni 2008 @ 11:22:39 #28
14337 BierKoning
Bier 4 Ever!!
pi_59671680
Stel ik heb een Rij, Rij 1, daarin zitten per kolom informatie, enkele datums die opgeteld worden met een excel formule, en enkele VBA-checkboxes. De kolommen staan dus met elkaar in verband (Dus bv Datum A1wordt gekoppeld aan B1, enz enz). Ditzelfde met de VBA-checkboxen.

Is het nu mogelijk om een scriptje te maken (wellicht aan een button) om een nieuwe rij toe te voegen, die exact deze layout van rij 1 aan te houden, inclusief alle formules, en VBA-checkboxen, alleen dan ipv A1 --> B1, A2 --> B2. Dus alles relevant aan rij 1 wordt nu rij 2. De rest van de losse informatie kan ik dan aan de hand van dropdown menu's zelf toevoegen.

Met copy past kom je met gewone formules een heel eind, alleen is dat niet mooi met data (als de formule een niet bestaande datum (leeg veld) opteld met 150 dagen telt hij het op bij het jaar 1900. Dus niet handig.

Kortgezegd:
Kan je met 1 druk op de knop een geheel nieuwe rij aanmaken, met gecorrigeerde formules en checkboxen, met behoud van de layout?
pi_59672058
Bij AANTAL hoef je alleen maar de range te geven G:G, en niet 2 erachter. '2' ziet Excel namelijk als één getal, en dus telt ie er één bij op.

=AANTAL(4,2) resulteert in 2 (er zijn immers 2 cijfers)

SUBTOTAAL en AANTAL zijn 2 totaal verschillende functies die qua functionaliteit niets met elkaar te maken hebben (alleen in het geavl van '2' als functie).

De 2 die jij als eerste argument geeft, zegt tegen SUBTOTAAL dat hij moet tellen hoeveel cellen er zijn, en dus doet SUBTOTAAL dat. In dit geval zijn SUBTOTAAL(2;data100!G:G) en AANTAL(data100!G:G) dus gelijk (allebei 52.204).

SUBTOTAAL heeft nog ongeveer 20 functies, raadpleeg hiervoor de Help voor meer uitleg
pi_59672189
Thanx voor de uitgebreide uitleg, die 2 was idd voor de subtotaal-functie . Ik gebruik de beide functies om bepaalde selecties te kunnen vergelijken met het totaal .
Op maandag 30 november 2009 19:30 schreef Ian_Nick het volgende:
Pietje's hobby is puzzelen en misschien ben jij wel het laatste stukje O+
pi_59672193
Bierkoning voor je 2e vraag, die eerste heb ik echt geen idee wat er gebeurt:

Je moet hiervoor denk ik op zoek gaan naar het groeperen van al je Controls die op die rij horen. Groups kan je namelijk een naam geven, en zo (waarschijnlijk) kopiëren en plakken.
  woensdag 25 juni 2008 @ 13:31:20 #32
14337 BierKoning
Bier 4 Ever!!
pi_59674929
Ik kom er echt niet uit

Ik kan inderdaad via grouping de 4 verschillende checkboxes selecteren en groupen. Dus wanneer ik deze 'groep' copy en paste dan krijg ik 4 nieuwe checkboxes, alleen zijn deze allemaal 'leeg'. Terwijl ik dus wil dat dezelfde VBA-macro van de checkboxRIJ1, nu checkboxRIJ2 wordt, en dat dus rij1 variabelen nu rij2 worden.

Dit opzichzelf is al niet echt makkelijk denk ik.

Los daarvan wil ik dan dus deze 4 checkboxen automatisch plaatsen op een voorgeselecteerde plek. Dit is wel mogelijk van wat ik op het web vond. Alleen moet ik dit nu dan ook nog zo voor elkaar krijgen dat dit OF gebeurd wanneer ik op een knop "NIEUW" klik, OF dat dat gebeurd wanneer ik bijvoorbeeld het eerste veld van een nieuwe rij maak.

Verder zou het dan geweldig zijn wanneer de rest van de dropdown menu's om de algemene data in te voeren ook gelijktijdig aanwezig zou zijn. Met uitzondering van de datum-invoervelden uiteraard.

Waarom ik dit zou graag wil:
1)Om mijzelf een hele hoop werk te besparen, ik verwacht ongeveer een lijst van 150 rows te hebben. Dit komt dus neer op handmatig 150x4 vba checkboxen aan te passen.
2)Om de sheet idiot-proof te maken. Zodat wanneer iemand buiten mij de sheet gebruikt, niks fout kan doen en alleen een nieuwe rij aan te maken en in te vullen.

Ook al kan iemand mij een beetje op weg helpen zou ik al blij zijn!
pi_59675019
Ik zie het niet echt gebeuren dat je zomaar macro's kan krijgen voor je gekopieerde tekst. Ik zou het eens hier proberen:
http://www.mrexcel.com/forum/forumdisplay.php?f=10
  woensdag 25 juni 2008 @ 14:07:09 #34
14337 BierKoning
Bier 4 Ever!!
  woensdag 25 juni 2008 @ 14:25:34 #35
14337 BierKoning
Bier 4 Ever!!
pi_59676393
Een nieuw idee wat ik mij net zat te bedenken:
Is het misschien makkelijker of meer do-able om een vragenlijst in sheet 2 te maken, en dat de informatie die deze vragenlijst krijgt aan antwoorden, weg te schrijven in de database van sheet 1?

Dan tackle ik alleen niet dat de checkboxes al goed staan

Kan ik ook niet een dag als een dolle aan de gang gaan en 2000 checkboxes maken en op de goeie plek zetten, en dan deze 'hiden' zodat mn database dr niet onwijs lelijk uit gaat zien met allemaal ongebruikte checkboxen?
pi_59676963
Je zou eens kunnen kijken naar zelfgeschreven Functions. Je maakt dan een code (een formule zo je wil) met eigen argumenten. Heel simpel voorbeeld:

1
2
3
4
5
6
Function Som(a, b, c as Integer)

x = a + b
Range("A" & c).Value = x

End Function


Dit kan je dan gebruiken om delen van code in te korten, zoals bv zo:
1
2
3
4
5
6
7
8
9
Private Sub Rekenen()

a = Range("B1").Value
b = Range("B2").Value
c = Range("B3").Value

Som(a, b, c)

End Sub

Als je deze Sub runt, pakt hij de waarden uit B1 en B2, telt ze bij elkaar op en zet ze in A1 (als B3 een '1' bevatte).
Hoop dat dat zo een beetje duidelijk is.

Ik heb dit zelf nog NOOIT gebruikt, maar ik denk dat je er wel iets mee kan

Succes.

Edit: zie ook bv http://archive.baarns.com/excel/faq/xd_macr1.asp#5
of
http://en.allexperts.com/(...)x-macro-hide-row.htm

Je kan vanaf andere checkboxes gewoon dezelfde subroutines aanroepen, dit moet je aanpassen in het Macro scherm of via de Properties (volgens mij). Dat scheelt al een hoop. Via de eerste link kan je dan testen wélke button de routine heeft aangeroepen, en op basis daarvan je variabelen aanpassen.
pi_59694127
quote:
Op woensdag 25 juni 2008 10:28 schreef BierKoning het volgende:
Ok ik heb een nogal vervelend probleem nu.

Ik ben weer bezig gegaan met VBA en opzich gaat het niet slecht. Op 1 puntje na..

Wanneer ik de volgende code gebruik:
[ code verwijderd ]

Telt hij netjes 152 dagen bij H2 op en 183 dagen bij I2. So far so good.

Alleen telt hij ook 183 dagen bij de computerdatum op Dit is binnen excel een probleem (ik heb de computerdatum nodig) maar het is ook gewoon algemeen onhandig als je computerdatum +10 jaar is (door het testen)

Weet iemand hoe dit komt?
Als je de variabele "datum" noemt ipv "date" zal het ws. een stuk beter gaan. "Date" is nl. een interne vba functie die de computerdatum opvraagt en schijnbaar ook terug kan schrijven.
Hetzelfde geldt ook voor "time"
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  vrijdag 27 juni 2008 @ 10:04:26 #38
14337 BierKoning
Bier 4 Ever!!
pi_59725089
Is het mogelijk om op sheet1 binnen een cel een dropdown menu te maken, met data die uit sheet2 komt? Zodoende kan ik drie cellen naast elkaar maken met elk een dropdown menu, naast deze 3 cellen nog 2 cellen handmatig invullen, en dan deze 5 cellen kopieren naar sheet 3.

Ik heb het al geprobeert met data validitation maar die is gebonden aan de gebruikte sheet. Advanced filter kwam ik zelf niet uit, kreeg het niet aan de praat..

Ik wil dit perse op sheet 1, aangezien dit mn data invoer veld is, en sheet 2 en 3 zijn mn databases.

Iemand anders nog een idee om dit op deze manier aan de gang te krijgen?
  vrijdag 27 juni 2008 @ 10:05:25 #39
14337 BierKoning
Bier 4 Ever!!
pi_59725116
Date veranderen in datum werkte perfect trouwens!
pi_59727008
Data validation kan je wel gebruiken cross-sheet als je een Named range gebruikt voor je lijst in Sheet2.

(Range selecteren, Invoegen -> Naam -> Definiëren, óf direct in het witte vak linksboven (waar je celnummer staat) een naam intoetsen en op Enter drukken).

In Data Validation kan je dan kiezen voor Lijst -> =<jenaamhier>

Zo kan je ook dubbele dropdowns maken, die dus afhankelijk van de keuze uit dropdown 1 verandert...erg fijn. Zie hier voor een tutorial
pi_59750112
quote:
Op vrijdag 27 juni 2008 11:17 schreef DaFan het volgende:
Data validation kan je wel gebruiken cross-sheet als je een Named range gebruikt voor je lijst in Sheet2.

(Range selecteren, Invoegen -> Naam -> Definiëren, óf direct in het witte vak linksboven (waar je celnummer staat) een naam intoetsen en op Enter drukken).

In Data Validation kan je dan kiezen voor Lijst -> =<jenaamhier>

Zo kan je ook dubbele dropdowns maken, die dus afhankelijk van de keuze uit dropdown 1 verandert...erg fijn. Zie hier voor een tutorial
Dat is wel een leuk dingetjes zeg dat je afhankelijke dropdown menus kan maken.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_59750385
Ik heb een bestand met 7 werkbladen waarin voornamelijk klantnummers verwerkt staan. Deze sheet gebruik ik voor rapportages maar ook voor follow-ups.
In werkblad 1 plaats ik de dagelijkse dingen, bijvoorbeeld:
Kl.nr.: 1234 | werkzaamheden: bestelling | Datum: 27-06-2008

Nu staan in werkblad 2 allerlei acties voor follow-ups, bijvoorbeeld:
Kl.nr.: 1234 | followup: over drie maanden bellen | Datum: 27-06-2008

Nu wil ik graag dat als ik in werkblad het klantnummer 1234 intik, dat er een melding (of een wijziging in kleur) komt, waardoor ik kan zien dat er al een follow-up bekend is, die dus zou kunnen komen te vervallen omdat deze als door de dagelijkse werkzaamheden is uitgevoerd.

Dus eigenlijk in het kort, in werkblad één voer ik een waarde in (klantnummer) die al in werkblad twee staat. Ik zal dan in werkblad één een melding moeten zien, zodat ik weet dat dezelfde waarde ook al in werkblad twee staat. Is dat mogelijk?
pi_59750493
Heb je een vaste cel waar je dat klantnummer invoert of kan dat elke cel zijn? In situatie 1 is het wel te doen, situatie 2 schier onmogelijk (automatisch = als je m intikt en op Enter ramt).

Wat wel kan, is een knop in Werkblad 1 die je gaat gebruiken om nieuwe klanten toe te voegen (met Prompts of via een Form, whatever) want dan kan je simpeler testen op het ingevoerde klantnummer.
pi_59750615
quote:
Op zaterdag 28 juni 2008 11:59 schreef Deetch het volgende:

[..]

Dat is wel een leuk dingetjes zeg dat je afhankelijke dropdown menus kan maken.
Ja ik leerde dit ook pas 2 maanden terug, scheelt een BERG gezeur met VBA
pi_59750658
quote:
Op zaterdag 28 juni 2008 12:18 schreef DaFan het volgende:
Heb je een vaste cel waar je dat klantnummer invoert of kan dat elke cel zijn? In situatie 1 is het wel te doen, situatie 2 schier onmogelijk (automatisch = als je m intikt en op Enter ramt).

Wat wel kan, is een knop in Werkblad 1 die je gaat gebruiken om nieuwe klanten toe te voegen (met Prompts of via een Form, whatever) want dan kan je simpeler testen op het ingevoerde klantnummer.
Het klantnummer staat altijd in kolom a, in alle sheets. Het is dus een lange rits met klantnummers onder elkaar.
pi_59750907
Ja daar was ik al bang voor

Kijk:
Als jij een nummer toevoegt, is er voor Excel geen manier om te kijken wáár dit is gebeurt (in welke cel). Dit kan wél als het altijd in dezelfde cel is. Je maakt dan een zogenaamde _change event, die elke keer gedaan wordt bij een wijziging in je sheet. (Kort gezegd, die cel wordt gekopieerd ergens ver weg buiten beeld en dan vergeleken met de oude waarde, is deze anders dan weet je dus dat er geknoeid is). Het is nu dus niet te doen om te bepalen óf er een nummer is toegevoegd en wáár (als je dat weet is het nummer bekend, dus kan je testen of hij al in werkblad 2 voorkomt).

Ik moet dit zelf nog even testen, misschien heb ik wel een manier om dit te omzeilen. Máár het is heir inmiddels half 9 dus ik ga even bier drinken en film kijken Misschien vanavond nog, anders morgen! Sorry
pi_59751004
quote:
Op zaterdag 28 juni 2008 12:34 schreef DaFan het volgende:
Ja daar was ik al bang voor

Kijk:
Als jij een nummer toevoegt, is er voor Excel geen manier om te kijken wáár dit is gebeurt (in welke cel). Dit kan wél als het altijd in dezelfde cel is. Je maakt dan een zogenaamde _change event, die elke keer gedaan wordt bij een wijziging in je sheet. (Kort gezegd, die cel wordt gekopieerd ergens ver weg buiten beeld en dan vergeleken met de oude waarde, is deze anders dan weet je dus dat er geknoeid is). Het is nu dus niet te doen om te bepalen óf er een nummer is toegevoegd en wáár (als je dat weet is het nummer bekend, dus kan je testen of hij al in werkblad 2 voorkomt).

Ik moet dit zelf nog even testen, misschien heb ik wel een manier om dit te omzeilen. Máár het is heir inmiddels half 9 dus ik ga even bier drinken en film kijken Misschien vanavond nog, anders morgen! Sorry
Wat niet kan, dat kan niet. Bedankt in ieder geval.
Have fun, proost.
pi_59752897
Ik zal morgen eens kijken voor je, nu nog ff geen zin in

Misschien kan ik er wel een knop bijbouwen die je moet indrukken om een nieuwe klant toe te voegen, + de gegevens, en die dan kijkt.
pi_59767327
Ok Dirkh het is gelukt :)

Ik ga uit van jouw voorbeeld zoals in je post staat. Kort samengevat:

- "Sheet1" is de eerste sheet en bevat de koppen Klantnummer, Werkzaamheden, Datum, waarbij Klantnummer in A1 staat.
- "Sheet2" is de tweede sheet en bevat de koppen Klantnummer, Followup, Datum, Klantnummer wederom in A1.

Ik heb de boel als volgt opgebouwd:
- F1 en G1 zijn hulpcellen. Je kan deze verplaatsen naar twee van de 16 miljoen cellen die je niet gebruikt, pas dan de code aan waar je F1 en G1 tegenkomt
- De formule in F1 is:
1INDEX(A:A,MATCH(9000000000+307,A:A))
of in het Nederlands
1INDEX(A:A;VERGELIJKEN(9000000000+307;A:A))


Jij dient nu nog het volgende te doen:
Ga naar de Visual Basic editor (Alt-F11) vanuit Sheet1, klik in de linkerdropdown in het rechterscherm Worksheet, en in de rechter Change.

Je krijgt dan dit te zien:
1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub


Plak hier de volgende code tussen, zodat het er zo uit ziet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Worksheet_Change(ByVal Target As Range)

LastRowB = Sheets("Sheet2").Range("A65536").End(xlUp).Row

With Sheets("Sheet1")
    If .Range("F1").Value <> .Range("G1").Value Then
        NwKlantnummer = .Range("F1").Value
            
        For i = 1 To LastRowB
            If Sheets("Sheet2").Range("A" & i).Value = NwKlantnummer Then
            
                Followup = Sheets("Sheet2").Range("B" & i).Value
                Datum = Sheets("Sheet2").Range("C" & i).Value
                
                MsgBox "Klantnummer al bekend in Sheet2!" & (Chr(13)) & (Chr(13)) & "Datum:  " & Datum _
                & (Chr(13)) & "Actie:  " & Followup, vbOKOnly, "Melding"
            End If
        Next i
    
    .Range("G1").Value = .Range("F1").Value
    End If
End With

End Sub


Als ik nu bijvoorbeeld 1234 intyp in Sheet1, krijg je de volgende melding:


Hoop dat je hier wat aan hebt!
pi_59767689
quote:
Op zondag 29 juni 2008 07:01 schreef DaFan het volgende:
Ok Dirkh het is gelukt

Hoop dat je hier wat aan hebt!
Hier heb ik helemaal wel wat aan. Het werkt precies zoals ik dat wil hebben.
Hardtstikke bedankt!
abonnement bol.com Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')