ga naar extra->macro->visual basic editorquote:Op woensdag 17 januari 2007 13:22 schreef Meeldraad het volgende:
@ Ralphies oplossing:
Hoe maak ik een worksheet_onchange macro? Dit is hoe ik het geprobeerd heb: Extra => Macro => Nieuwe macro opnemen => naamgeven, OK => stopknop. Vervolgens in Macro's bewerken heb ik alles geselecteerd en jouw scriptje eroverheen geplakt. Daarna heb ik A1:A100 vervangen door B3 (aangezien er maar een cel is waarin je de geboortedatum moet invullen). Misschien heb ik een fout gemaakt, maar het resultaat is in ieder geval geen streepjes en de rekencellen rekenen er niet mee. Een voorbeeld van een rekencel is dit:
Waar heb je die datums die je invoert dan allemaal al staan?quote:Op woensdag 17 januari 2007 14:27 schreef Meeldraad het volgende:
@ Arcee
Klopt die oplossing was ook werkzaam, maar als je weet hoeveel verwijzingen ik dan handmatig zou moeten omzetten, daar wordt je niet blij van, komt nog eens bij dat de formules nog ondoorzichtiger worden dan ze al zijn en als er ergens toch nog fouten inzitten wordt het nog lastiger ze op te sporen. De formules moeten zo gestroomlijnd mogelijk zijn. En zoals gezegd lost het niet alle problemen op.
Daar maak je dan weer een aparte ALS voor. In jouw Nederlandse versie zou dat dan zo moeten worden:quote:Het invoeren van een datum mét streepjes leidt tot foute waarden.
1 2 3 4 | Application.Goto Reference:="R65536C[0]" Selection.End(xlUp).Select End Sub |
1 2 3 4 | Application.Goto Reference:="R1C[0]" If ActiveCell.Value = "" Then Selection.End(xlDown).Select End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Dim Mark As Integer Dim Marker, Markcolor As String Marker = InputBox("Welke tekenreeks (getal of string) staat in de te markeren cel?", "Merkteken") If Marker = "" Then Exit Sub Markcolor = InputBox("Welke kleur markering? (rood, groen, blauw, geel, roze)", "Markerkleur", "rood") bool = Markcolor = "rood" Or Markcolor = "groen" Or Markcolor = "blauw" Or Markcolor = "geel" Or Markcolor = "roze" If bool = False Then Exit Sub If Markcolor = "rood" Then Mark = 3 If Markcolor = "groen" Then Mark = 4 If Markcolor = "blauw" Then Mark = 5 If Markcolor = "geel" Then Mark = 6 If Markcolor = "roze" Then Mark = 7 Do Until ActiveCell.Value = "" If ActiveCell = Marker Then ActiveCell.Interior.ColorIndex = Mark If CStr(ActiveCell.Value) = Marker Then ActiveCell.Interior.ColorIndex = Mark ActiveCell.Offset(1, 0).Range("a1").Select Loop End Sub |
ja, de cel geeft het nu als tekst weer. Om met deze tekst als datum te werken, moet je de functie DATUMWAARDE gebruiken, bijvquote:Op woensdag 17 januari 2007 14:27 schreef Meeldraad het volgende:
@ralfie
Oké gelukt, en inderdaad maakt het nu niet uit of ik ze met of zonder streepje invoer, uiteindelijk staan ze er zoals ik ze wil zien. A sight for sore eyes! Alleen de rekencellen doen er nog niks mee. Moet ik misschien een andere verwijzing gebruiken dan in mijn vorige post?
1 |
Zie m'n profiel. Je hebt zo te zien je PM niet geactiveerd.quote:Op donderdag 18 januari 2007 12:01 schreef Meeldraad het volgende:
PM maar een mailadres bij belangstelling.
Het probleem is dat een illegale datum door excel niet kan worden omgezet en dan kun je er in visual basic ook niks mee.Maar na wat experimenteren net iets uitgevonden. Cell.value2 geeft de ingevoerde waarde, ook als deze geen legale datum is. De aangepaste code wordt dan:quote:Op donderdag 18 januari 2007 12:01 schreef Meeldraad het volgende:
@ ralfie
Dat is nog een relatief kleine toevoeging... even testen....
Wauw, ik geloof dat dit een oplossing is waar ik mee kan leven! Het is niet zo te regelen dat de celeigenschap al op datum staat en dat je vervolgens via een macro het hele streepverhaal bewerkstelligt? (Zoals gezegd, ik wil de formules zo kort mogelijk houden)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | If Not Intersect(Range("A1:A100"), Target) Is Nothing Then On Error GoTo wrong Dim vale As String, length As Integer For Each cell In Target length = Len(cell.Value2) If length = 7 Or length = 8 And Not length = 0 Then If length = 7 Then vale = "0" & cell.Value2 Else vale = cell.Value2 End If cell.Value = DateValue(Left$(vale, 2) & "-" & Mid$(vale, 3, 2) & "-" & Right$(vale, 4)) End If Next cell End If Exit Sub wrong: MsgBox "De ingevulde waarde: '" & vale & "' is geen geldige datum!" End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ' Deze macro kijkt of de cel onder de active cell dezelfde waarde bevat. ' Zo ja dan wordt deze verwijderd, anders wordt er verder gegaan Do While ActiveCell.Value <> "" Curr = ActiveCell.Value ActiveCell.Offset(1, 0).Range("A1").Select Do Application.CutCopyMode = False Selection.Delete Shift:=xlUp Loop While ActiveCell.Value = Curr Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ' ' Deze macro verwijderd duplicaten uit een ongesorteerde kolom ' Hierbij wordt bovenaan begonnen Do While ActiveCell.Value <> "" Check = ActiveCell.Value rij = ActiveCell.Row kol = ActiveCell.Column Do While ActiveCell.Value <> "" ActiveCell.Offset(1, 0).Range("a1").Select If ActiveCell.Value = Check Then Selection.Delete Shift:=xlUp Else: End If Loop 'activecell weer terug naar check cell en 1 cel naar beneden en do -loop Range("a1").Select ActiveCell.Offset(rij, kol - 1).Range("a1").Select Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Dim arr() As Integer Dim vals() As Variant Dim number As Integer number = ThisWorkbook.Sheets("blad1").UsedRange.Count ReDim arr(number, 2) ReDim vals(number) Dim x For Each cell In ThisWorkbook.Sheets("blad1").UsedRange If Not cell.Value = "" Then arr(x, 1) = cell.Column arr(x, 2) = cell.Row vals(x) = cell.Value x = x + 1 End If Next cell ThisWorkbook.Sheets("blad2").Activate Dim drow As Integer, dcol As Integer For y = 0 To x - 1 dcol = arr(y, 1) - 2 If dcol < 1 Then dcol = 1 drow = arr(y, 2) * 3 If arr(y, 1) = 1 Then drow = drow - 2 ElseIf arr(y, 1) = 2 Then drow = drow - 1 End If Cells(drow, dcol).Value = vals(y) Next y End Sub |
Hehe, ik slaap in het weekend. Maar Ralfie is een betere coder dan ik en die heeft op zondag niets te doen zo te zienquote:
OK, maar als ik nou tekst van het getal maak met TEKST()? Dan kan ik in elk geval wel de notatie veranderen. Bijvoorbeeld:quote:Op dinsdag 23 januari 2007 10:48 schreef Deetch het volgende:
Volgens mij kun je bij formulegebruik alleen de hele cel dezelfde layout geven.
Als de cel geheel is gevuld met text en dan kun je wel deel layouts gebruiken.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | getal = ActiveCell.Offset(0, -1).Value ActiveCell.FormulaR1C1 = "Het antwoord is: " & getal With ActiveCell.Characters(Start:=18, Length:=Len(getal)).Font .Name = "Arial" .FontStyle = "Vet" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub |
1 |
1 |
Als er echt altijd een komma na het adres komt, dan is dit volgens mij het handigst:quote:Op vrijdag 26 januari 2007 11:37 schreef JortK het volgende:
Ik heb zelf hulp nodig
ik heb een kolom met de volgende informatie:
[ code verwijderd ]
Nu wil ik in een ander kolom alleen de tekens hebben tot het komma teken, dus:
[ code verwijderd ]
Hoe doe ik dit
Werkt als een tiet thanksquote:Op vrijdag 26 januari 2007 12:02 schreef Frollo het volgende:
[..]
Als er echt altijd een komma na het adres komt, dan is dit volgens mij het handigst:
=LINKS(A1;VIND.SPEC(",";A1)-1)
quote:Op zondag 28 januari 2007 13:31 schreef Da_KlouwN het volgende:
Ik zoek een functie om automatisch de laatste datum van de maand waarin we ons bevinden te tonen.
Bestaat dit eigenlijk wel?
LAATSTE.DAG is dus de functie die je kunt gebruikenquote:Dit kun je doen door de functie "LAATSTE.DAG" , maar deze is niet onmiddelijk beschikbaar. Deze extra functies moet je eerst "activeren".
Ga hiervoor naar Extra> invoegtoepassingen en zet een vinkje voor "analysis toolpak".
Nu de formule.
Veronderstel dat in cel A1 de functie "=VANDAAG()" hebt staan (de datum van vandaag) en je wilt de factuur betaald hebben 2 maanden na vandaag gebruik je volgende formule.
=LAATSTE.DAG(A1;2) .
ALs je een Engelse Excel gebruikt , noemt de functie =EOMONTH(A1;2)
quote:Op zondag 28 januari 2007 13:31 schreef Da_KlouwN het volgende:
Ik zoek een functie om automatisch de laatste datum van de maand waarin we ons bevinden te tonen.
Bestaat dit eigenlijk wel? :?
1 |
Als in b1 het emailadres wel of niet staat dan doe je in C1 de volgende formule.quote:Op zondag 28 januari 2007 11:20 schreef BattleLies het volgende:
Wilde eerst een topic openen maar zag gelukkig deze reeks. ^O^
Ik wil in een simpel excelsheetje het volgende weergeven
kolom1: naam
kolom2: mailadres
kolom3: text: "op mailinglijst"
kolom 3 moet die text weergeven indien het mailadres is ingevuld.
Ik ben aan het proberen met als maar kan niet vinden hoe ik die formule zo moet maken dat hij niet op waarde of text de text erin knalt maar dat hij het bij alle waardes of letters de text in die kolom knalt.
Wie weet raad? :)
1 |
wow daar was ik niet opgekomen. ik had een vergelijking gemaakt met een leeg vakje en dan tekst aan waar geplakt. werkte ook maar was wel omweg. Ik zocht me kwijt naar de directe formule maar kon niks bedenken voor: " indien ingevuld"quote:Op maandag 29 januari 2007 10:25 schreef Deetch het volgende:
[..]
Als in b1 het emailadres wel of niet staat dan doe je in C1 de volgende formule.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Value = "------" eindrij = ActiveCell.Row Range("a1").Select Do waarde = 0 Do Until ActiveCell.Value = "------" Or ActiveCell.Value = "" waarde = waarde + ActiveCell.Value ActiveCell.Offset(1, 0).Select Loop tussenrij = ActiveCell.Row Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select ActiveCell.Value = waarde Range("A" & tussenrij + 1).Select Loop Until tussenrij > eindrij |
1 2 3 | Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select |
1 |
door in celeigenschappen het getal als categorie tijd in te stelleen. Daarna kun je gewoon rekenen met die waarden alsof het gewoon getallen zijnquote:Op zaterdag 3 februari 2007 17:39 schreef Flaccid het volgende:
Ik ben voor mezelf een overzicht aan het maken voor mijn werk, met zoveel uur enzo.
Hoe kan ik uren bij elkaar optellen? Bijvoorbeeld 6:45 + 3:24 ?
(6:45 = 6 uur en 45 minuten gewerkt)
Hoe doe je dat? 6:43 zijn uren en minuten he?quote:Op zaterdag 3 februari 2007 22:05 schreef ralfie het volgende:
[..]
door in celeigenschappen het getal als categorie tijd in te stelleen. Daarna kun je gewoon rekenen met die waarden alsof het gewoon getallen zijn
Heel simpel. Rechtermuisknop -->format cells.quote:Op zondag 4 februari 2007 09:25 schreef Flaccid het volgende:
[..]
Hoe doe je dat? 6:43 zijn uren en minuten he?
Heb al een oplossing gegeven in je andere topicquote:Op zondag 4 februari 2007 13:16 schreef LennyKravitz het volgende:
Had er een topic voor geopend, maar zou hier moeten:
------------------------------------------------------------------------------
Dit is echt er een voor excel-slimmeriken. Ik zoek al een paar dagen naar de oplossing, via allerlei formules, maar het lukt me niet. Please help!
Gegeven in rij 1: een serie oplopende data. Deze data kunnen netzover doorlopen als nodig. Deze data kunnen veranderen/verschuiven, maar zijn altijd een oplopende serie, dus 1 cel naar rechts is de vorige cel +1.
Gegeven in rij 2: rij twee kan alleen 0 of 1 zijn. Deze 0-en en 1-en kunnen veranderen. Extra gegeven: het maximum aantal 1-en achter elkaar is 9. het maximum aantal 0-en achter elkaar is 5.
De gewenste uitkomst (hier in rij 7):
In deze rij moeten de eerste 7 data uit rij 1 komen waar een 0 onder de datum staat. Dus, als er een 1 onder de datum staat, moet deze overgeslagen worden en gezocht worden naar de eerstvolgende datum met een 0.
De 0-en en 1-en uit rij 2 kunnen veranderen, waarna rij 7 dus vanzelf de nieuwe 7 data moet berekenen.
Voorbeeldsituatie 1:
[afbeelding]
Voorbeeldsituatie 2:
[afbeelding]
WIE O WIE weet hier een oplossing voor?...![]()
Liefst zonder vb scripting, maar als het niet anders kan laat maar zien hoe het dan met vb scripting gaat (daar heb ik nl de ballen verstand van nl.)...
quote:Op zondag 4 februari 2007 14:21 schreef ralfie het volgende:
[..]
Heb al een oplossing gegeven in je andere topic
Heb je ook een oplossing voor mij:Dquote:Op zondag 4 februari 2007 13:21 schreef Flaccid het volgende:
Het lukt me niet, ik kan niet afronden naar halven :S Please help
Afronden.n.veelvoud doet t nie bij mij
ik ben niet zo bekend met tijdfuncties, maar iets als dit werkt iig:quote:Op zondag 4 februari 2007 14:32 schreef Flaccid het volgende:
[..]
[..]
Heb je ook een oplossing voor mij:D
1 |
Waarvoor nogmaals mijn dank!quote:Op zondag 4 februari 2007 14:21 schreef ralfie het volgende:
[..]
Heb al een oplossing gegeven in je andere topic
Dit topic dus, voor het archief zeg maar.quote:Op zondag 4 februari 2007 14:21 schreef ralfie het volgende:
[..]
Heb al een oplossing gegeven in je andere topic
=ALS(ISLEEG(A1);"";ALS(A1>=250;0;1))quote:Op maandag 5 februari 2007 12:05 schreef MaVeJuH het volgende:
Mijn vraag is als volgt:
een cel geeft een getal hoger dan 250 of lager dan 250 weer
een andere cel moet aangeven dat als het getal 250 is of hoger de waarde 0
is het getal onder de 250 dan moet de cel de waarde 1 aangeven.
Ik heb hem tot nu toe alleen maar zo ver gekregen dat hij waarde o zet bij 250 en bij alle overige getallen zowel hoger als lager dan 250 1.
Van macro's heb ik geen verstand, maar werkt =WAARDE() niet dan?quote:Op maandag 5 februari 2007 13:56 schreef JortK het volgende:
Ik ben op zoek naar een macro waarvan ik een hele kolom in een keer kan converteren van tekst naar getal... want met de Celeigenschappen pakt die dat niet
Stom dat ik daar niet aan gedacht hebquote:Op maandag 5 februari 2007 13:57 schreef Frollo het volgende:
[..]
Van macro's heb ik geen verstand, maar werkt =WAARDE() niet dan?
=aantal.als(bereik;criterium) is de formule die je zoekt!quote:Op maandag 5 februari 2007 15:56 schreef wouswous het volgende:
Vraagje:
Heb een kolom waar verschillende jaartallen instaan.
Onderaan deze kolom moet er een optelling komen hoevaak een jaartal voorkomt in deze kolom.
Zoiets als:
Als (een getal uit kolom 1 = 2007) ; aantal optellen ; niets doen.
Iemand een oplossing hiervoor, zonder dat ik aparte kolomen ga maken per jaar.. (ALS cel1=2007;1'0) en dan een totaaloptelling hoevaak dit jaar voorkwam.
Je kunt in de Pagina-instellingen (tabblad Blad) wel aangeven dat je de opmerkingen aan het eind van het document wilt afdrukken. Dat ziet er op zich keurig uit, met de celverwijzing erbij en zo.quote:Op maandag 5 februari 2007 17:21 schreef Deetch het volgende:
Ik heb een werkblad van iemand gekregen met commentaren bij verschillende cellen (rooie driehoekje in rechterboven hoek van een cel).
Nu wil ik deze commentaren in een aparte cel geplaatst hebben, is dat mogelijk met een functie of moet ik een macro gaan schrijven?
1 2 3 4 5 6 7 | ' Haalt de comment uit aangegeven cel en verwijderd de eerste n characters ' n is naam van invoerder+3 GetComment = Mid(Cell.Comment.Text, n, Len(Cell.Comment.Text) - n + 1) End Function |
Hartstikke bedankt!quote:Op maandag 5 februari 2007 15:58 schreef Frollo het volgende:
[..]
=aantal.als(bereik;criterium) is de formule die je zoekt!
Dus bijvoorbeeld:
=aantal.als(A1:A999;2007)
Probeer het eens met een macrootje die elke keer als je iets op werkblad 1 veranderd ook je tweede werkblad aanpast? Volgens mij moet dat met een Private Sub worksheet_change. Verder moet je zelf ff googlen want hiermee heb ik ook geen ervaring.quote:Op maandag 5 februari 2007 21:18 schreef LennyKravitz het volgende:
het volgende raadsel:
Stel je hebt op het eerste tabblad in kolom B gewoon een rijtje met gegevens staan (tekst) (zie pic)
[afbeelding]
Ik wil dat kolom B exact (als ware het een kopie) wordt weergegeven op het tweede tabblad.
Het probleem: als ik KOPPELING PLAKKEN gebruik, is dat in eerste instantie best geslaagd. Maar...... als ik op eerste tabblad een rij invoeg, gaat het mis op blad 2... daar gebeurt niets natuurlijk, en worden alleen de linkverwijzingen aangepast...
Hetzelde gebeurd als ik (uit het voorbeeld), de eerste 3 items (bla, boe en bah) zou seleteren, en ergens verder naar onder in kolom B sleep..., want dan krijg je op het tweede tabblad #VERW!-meldingen.
Dus hoe krijg je het voor elkaar dat tabblad twee als een soort view (en dus minder gelinkt) iets van tabblad 1 weergeeft?
Dit lijkt een beetje anders te gaan bij jouw als bij office 97, maar kun je niet gewoon de hele kolom B een formule geven van =Blad1!B1 etc ?quote:Op maandag 5 februari 2007 21:18 schreef LennyKravitz het volgende:
het volgende raadsel:
Stel je hebt op het eerste tabblad in kolom B gewoon een rijtje met gegevens staan (tekst) (zie pic)
[afbeelding]
Ik wil dat kolom B exact (als ware het een kopie) wordt weergegeven op het tweede tabblad.
Het probleem: als ik KOPPELING PLAKKEN gebruik, is dat in eerste instantie best geslaagd. Maar...... als ik op eerste tabblad een rij invoeg, gaat het mis op blad 2... daar gebeurt niets natuurlijk, en worden alleen de linkverwijzingen aangepast...
Hetzelde gebeurd als ik (uit het voorbeeld), de eerste 3 items (bla, boe en bah) zou seleteren, en ergens verder naar onder in kolom B sleep..., want dan krijg je op het tweede tabblad #VERW!-meldingen.
Dus hoe krijg je het voor elkaar dat tabblad twee als een soort view (en dus minder gelinkt) iets van tabblad 1 weergeeft?
Dat kan wel maar op het moment dat je in blad 1 een regel verwijdert of toevoegt worden deze op blad 2 niet verwijderd of toegevoegd maar worden de verwijzing aangepast.quote:Op dinsdag 6 februari 2007 10:14 schreef ralfie het volgende:
[..]
Dit lijkt een beetje anders te gaan bij jouw als bij office 97, maar kun je niet gewoon de hele kolom B een formule geven van =Blad1!B1 etc ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Dim iBeg, iEnd As Integer ' If 1-26, then this is an easy conversion If iCellNo < 27 Then GetExcelColumn = Chr$(iCellNo + 64) Else ' Now we have to account for AA-ZZ iBeg = iCellNo 26 ' Get the first letter iEnd = iCellNo Mod 26 ' Get the second letter If iEnd = 0 Then ' If iEnd is 0, then it is Z, which should be 26 iEnd = 26 '** you need to subtract 1 from the initial letter otherwise your lettering will be the next letter in the alphabet iBeg = iBeg - 1 End If GetExcelColumn = Chr$(iBeg + 64) & Chr$(iEnd + 64) End If End Function |
1 |
ws. moet je met een macro de beveiliging opheffen, dropbox menuus vullen en beveiliging weer aanbrengenquote:Op woensdag 7 februari 2007 01:59 schreef LennyKravitz het volgende:
Ik heb een excel blad, dat alleen uitkomsten van formules bevat (berekend vanaf andere bladen).
Verder bevat het blad 2 drop-down-selectie boxen.
Hoe kan ik dit blad in zodanig beveiligen dat niemand de formules kan aanpassen, en dat de drop-down-boxes wel blijven werken. Als ik nl. het blad beveilig, dan werken de dropdownboxes niet meer (uitkomsten op dit blad veranderen door deze drop-drown-boxes, en dat kan in beveiligde situatie blijkbaar niet).
hmmm...... ik zou me kunnen voorstellen dat je dus het blad kunt beveiligen en dat je niets kan veranderen door in rechtstreeks cellen te editen, maar maar dat je wel formules hun werk kunt laten doen....quote:Op woensdag 7 februari 2007 08:39 schreef Deetch het volgende:
[..]
ws. moet je met een macro de beveiliging opheffen, dropbox menuus vullen en beveiliging weer aanbrengen
Moeten het getallen blijven, met andere woorden: wil je er nog mee kunnen rekenen als dat "00" er eenmaal voor staat?quote:Op woensdag 7 februari 2007 12:26 schreef mrPanerai het volgende:
Ik heb een hele kolom met enkel getallen, nu wil ik voor elk getal 00 plaatsen...kan dit in een keer
Thanks
Misschien begrijp ik het niet goed...quote:Op woensdag 7 februari 2007 09:45 schreef ralfie het volgende:
je kunt in celeigenschappen (laatste tab) de cel blokkeren of niet, waardoor je kunt bepalen welke cellen wel, en welke cellen niet mogen worden veranderd als de beveiliging erop zit
heb het reeds gevonden... celeigenschappen...categorie aangepast en dan aantal 0quote:Op woensdag 7 februari 2007 13:59 schreef Frollo het volgende:
[..]
Moeten het getallen blijven, met andere woorden: wil je er nog mee kunnen rekenen als dat "00" er eenmaal voor staat?
En hebben alle getallen hetzelfde aantal cijfers?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |