alpha
Lid-
Items
1.125 -
Registratiedatum
-
Laatst bezocht
Inhoudstype
Profielen
Forums
Store
Alles dat geplaatst werd door alpha
-
vba = "visual basic for applicatons", dat is de taal waarin de Microsoft macro's worden geschreven (de applications zijn dan Word, Excel, Outlook, Powerpoint, ...). Op dezelfde plaats als waar ik je in mijn vorig bericht naar verwees, zie je onder die macro een tweede staan met daarin deze regel (maar met meer namen): .List = Array("Jan Janssens", "Linda Wouters", "Mieke Aelvoet (amb)") Je moet daarin die namen wijzigen en aanvullen met jouw namen. Voor de goede werking is het dan noodzakelijk dat in de map waarover ik het in mijn vorig bericht had, Wordbestanden met precies dezelfde namen voorkomen. Uitgaande van het voorbeeld dus: Jan Janssens.doc , Linda Wouters.doc , Mieke Aelvoet (amb).doc Je kunt eventueel de inhoud van het Worddocument dat je al hebt naar het Wordbestand met de macro's kopiëren, dan kun je de macro gebruiken.
-
Oei, dan ben je waarschijnlijk nog nooit met macro's, vba, en formulieren bezig geweest. Dat is jammer. Die macro hoort bij de knop op het formulier, dus daar moet je hem zoeken. 1. Houd de linker ALT-toets ingedrukt en druk op F11. 2. Het venster dat nu verschijnt zou uit 2 delen moeten bestaan. Zie je aan de linkerkant geen deelvenster met de naam "Project" met daaronder "Normal" en "Project (DB)", kies dan bovenaan in het menu: "Beeld" - "Projectverkenner", dan is dat deelvenster wel zichtbaar. 3. Klik in dat deelvenster op het plusteken vóór "Project (DB)", dat plusteken wordt dan een minteken en de onderliggende mapjes worden zichtbaar. 4. Klik op het plusteken vóór "Formulieren" en daarna 1 x op "Userform1". Kies dan in het menu: "Beeld" - "Programmacode". 5. Je ziet nu in het rechter-deelvenster de bewuste macro staan, waarin je mypath = "C:\Namen\" moet wijzigen in de locatie op jouw computer (dat kan een lang pad zijn). Doe dat zorgvuldig, vergeet de slashes en de aanhalingstekens niet! En vergeet ook niet om het document daarna op te slaan. Als test zou je een leeg Worddocument kunnen aanmaken met 1 van de fictieve namen die in DB.docm staan (bv. Linda Wouters.doc), dat bestand plaats je in de map waarvan het pad in de macro staat. Je laat dat bestand gesloten. Open dan db.docm, typ daarin een tekst, selecteer die, en voer de macro uit. Open daarna "Linda Wouters.doc" om te controleren of de geselecteerde tekst er in staat.
-
Dat komt er ook te staan! Als er dat bij jou niet staat, wat is dan bij jou het resultaat van de opdracht? Opmerking hierbij: Je moet wel bedenken dat je geen 2 getallen maar 2 beweringen met elkaar vergelijkt, namelijk: $B$18="Vaste dwarsaanslag" en $B$17=1 Beide beweringen kunnen WAAR of ONWAAR zijn, het resultaat is dus ook WAAR of ONWAAR, maar omdat je een vermenigvuldiging maakt maak je van WAAR en ONWAAR een 1 en een 0. Er zijn dan 4 mogelijkheden: - Bewering 1 is WAAR en bewering 2 is WAAR --> Uitkomst: 1 x 1 = 1 - Bewering 1 is WAAR en bewering 2 is ONWAAR --> Uitkomst: 1 x 0 = 0 - Bewering 1 is ONWAAR en bewering 2 is WAAR --> Uitkomst: 0 x 1 = 0 - Bewering 1 is ONWAAR en bewering 2 is ONWAAR --> Uitkomst: 0 x 0 = 0 Je kunt je opdracht overigens verkorten tot: =($B$18="Vaste dwarsaanslag")*($B$17=1) Om te laten blijken dat het resultaat WAAR of ONWAAR is, voer dit in: =EN($B$18="Vaste dwarsaanslag";$B$17=1) En om die uitkomst weer in een 0 of 1 om te zetten: =--EN($B$18="Vaste dwarsaanslag";$B$17=1) PS: Het is gebruikelijk om per topic 1 onderwerp te behandelen. Gebruik voor een nieuw onderwerp een nieuw topic.
-
@mouche13, Als het juist is wat hierboven staat: dat de bijlage bij mijn vorige bericht nog niet is gedownload, dan heb je blijkbaar geen behoefte meer aan een oplossing. Waarom heb je dat dan niet eerder gemeld?
-
Zie de bijlage. jasper.xlsm
-
Met vertikaal zoeken zoek je inderdaad naar de gevraagde tekst (bv. een naam), maar als die gevonden wordt kun je meteen ook de andere gegevens van die persoon opvragen en weergeven, als die gegevens tenminste min of meer logisch bij elkaar staan. Plaats hier eens een (voorbeeld)bestand met een aantal (eventueel fictieve) gegevens, dan kan snel beoordeeld worden of en hoe je de gegevens kunt opvragen.
-
Als je weet hoe de gegevens van fabrikanten en vertegenwoordigers in het andere blad staan, zou je die data bv. kunnen opvragen met 'vertikaal zoeken'.
-
Hetzelfde, maar dan toegepast in het bestand dat je postte, typ in H7: =ALS(AANTAL(D7:F7)=3;1;"") Zorg er wel voor dat de celeigenschappen van H7 ingesteld staan op "Standaard".
-
Probeer het eens met de invoegtoepassing van Microsoft die je kunt downloaden op dit adres: https://www.microsoft.com/nl-NL/download/details.aspx?id=7
-
Dat "automatisch" (als je bedoelt "helemaal automatisch"), dat kun je wel vergeten. Word zou dan moeten weten naar welk bestand (met een bepaalde naam) de tekst gekopieerd zou moeten worden. Dat is minder eenvoudig dan je op het eerste gezicht zou denken. Het navigatievenster met de namen is door Word-vba nl. niet programmeerbaar. En je kunt ook niet redeneren: "gebruik als bestandsnaam de eerste of tweede regel met tekst van een pagina" (waarin de naam staat), want Word/Word-VBA kent formeel geen begin of einde van een pagina. De lengte van een pagina wordt in Word immers bepaald door de printer, niet door Word. Daarom moest naar een andere oplossing worden gezocht. Ik heb er daarbij voor gekozen om de namen onder te brengen in een listbox. Van alle namen die je in het navigatievenster ziet staan, wordt dan verondersteld dat er een Wordbestand van bestaat. Voorbeeld: als in het navigatievenster de namen "Jan Janssens" en "Mieke Aelvoet (amb)" voorkomen (zoals in mijn voorbeeld het geval is), dan moeten de Wordbestanden "Jan Janssens.doc" en "Mieke Aelvoet (amb).doc" op je computer bestaan; hetzelfde geldt voor alle andere namen in het navigatievenster. Maar als ik je vraag goed begrepen heb, is dat op jouw computer al het geval. Is dat niet het geval, dan zal er een foutmelding volgen als je naar het betreffende bestand wil kopiëren. Verder nog het volgende: - Omdat je in je laatste bericht een .doc-document toevoegde, veronderstel ik dat je met Word 97, 2002, of 2003 werkt, daar is in de macro dan ook van uitgegaan. - Als map waar de betreffende Wordbestanden staan is gekozen voor C:\Namen , pas die locatie aan indien nodig. Als dat gebeurd is, is de procedure als volgt: - Selecteer in het bestand db.docm de tekst die je wil kopiëren. - Klik in de 'werkbalk snelle toegang' op het icoon met de drie gele blokjes om de macro te starten. - Klik op de naam naar wiens Wordbestand je de tekst wil kopiëren. - Klik op Ok. Hierna wordt de geselecteerde tekst gekopieerd. DB.zip
-
Helaas nog geen antwoord op de vraag die ik op 20/01/2016 stelde, welk e-mailprogramma je op je computer gebruikt. Het is Outlook, maar WELKE Outlook ? Die van MS Office of een andere (Outlook.com bv) ? Dat was belangrijk om een passend antwoord te kunnen geven, nu heb ik moeten gokken.
-
Dan maak je er een HTML-e-mail van ? Mijn vraag met welke Outlook je werkt, stelde ik omdat ik denk dat je met de code die je in je eerste bericht vermeldde, geen tekst in de 'body' van de e-mail kunt krijgen als "Outlook behorend tot MS Office" niet op je computer is geïnstalleerd. Je bericht nader beschouwend zie ik dat je de Outlook-app gebruikt, dus ik vermoed dat het dan met de aanpak uit bericht 1 niet zal lukken. Daarom stel ik een andere wijze van verzenden voor. Probeer onderstaande code, maar wijzig daarin eerst: - in regel 8 van boven: het e-mailadres in het juiste e-mailadres dat je als afzender gebruikt. - in regel 8 van onder: "mail.telenet.be" in de naam van de uitgaande server van jouw provider (mail.telenet.be dat ik heb vermeld, is de naam van de uitgaande server van Telenet). Vergeet bij de aanpassingen de aanhalingstekens niet. De regel voor het bijvoegen van een attachment heb ik non-actief gemaakt. Wil je beslist een Excelbestand meesturen, dan moet je er rekening mee houden dat je niet een geopend bestand kunt meesturen (dus indien nodig een kopie van bv. 1 blad als afzonderlijk bestand opslaan). Maar ik veronderstel dat je toch geen Excelbestand met macro's mee gaat sturen? ALS je een Excelbestand wil meesturen, dan moet je in de regel met het attachment uiteraard het pad en de naam van het bestand aanpassen. Probeer als test eerst e-mails zonder attachment te verzenden. Let op dat met gebruik van deze wijze, de verstuurde e-mails niet verschijnen in je e-mailprogramma bij de "Verzonden items". Laat aub het resultaat weten. Sub Sendmail1() Dim r as integer, m as integer m = Cells(Rows.Count, 1).End(xlUp).Row For r = 2 To m With CreateObject("CDO.Message") '.AddAttachment ("C:\Documents and Settings\Eigenaar\Bureaublad\map1.xlsm") For r = 4 To 5 .From = "peterlol@telenet.be" .To = Cells(r, 17).Value .Subject = "Cash Back Januari 2016 - " & Cells(r, 1).Value & " te " & Cells(r, 16).Value .TextBody = "Beste " & Cells(r, 15) & " " & Cells(r, 20) & "," & vbCrLf & vbCrLf & _ "Onze Cashbacks van de maand Januari hebben wij afgesloten" & vbCrLf & _ "en je mag ons dan ook 1 factuur opmaken van " & Cells(r, 10).Value & " euro excl. BTW. " & _ vbCrLf & "met volgende vermelding: " & _ "Cashback Lightning " & Cells(r, 3).Value & vbCrLf & Cells(r, 9).Value & "." With .configuration.Fields .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.telenet.be" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Update End With .Send Next r End With End Sub
-
Het is altijd handig dat je vermeldt wat je zelf al hebt ondernomen om tot een oplossing te komen, dan hoeven lezers van dit forum daar geen aandacht meer aan te besteden. Van belang om te weten kan ook zijn met welke versie van Word je werkt en of de melding zich bij elk Wordbestand voordoet (dus ook een nieuw Wordbestand) of bij 1 specifiek bestand. En ook wanneer de melding is ontstaan: zonder enige aanleiding, of nadat je een macro had opgenomen bijvoorbeeld. Hoe dan ook: ik zou het sjabloon Normal.dotm verwijderen, dat bestand wordt dan automatisch en zonder macro's opnieuw aangemaakt als je nadien Word opstart. Zoek naar dat bestand via de zoekfunctie van Windows, maar zorg er wel voor dat voordat je dat doet in Windows Verkenner bij de mapopties "Verborgen bestanden en mappen weergeven" is aangevinkt.
-
Klik in het menu van Word achtereenvolgens op: Bestand (in Word 2007 de ronde Officeknop linksboven) - Opties - Vertrouwenscentrum -> Instellingen voor Vertrouwenscentrum (knop aan de rechterkant) - Instellingen voor macro's, en vink aan: "Alle macro's inschakelen (.....)", Klik op Ok, en nogmaals op Ok.
-
@peterlol, in je code staan een aantal aanhalingstekens verkeerd en de code ziet er bovendien nogal verwarrend uit (vind ik). Maar vertel eerst eens: werk je met Outlook, behorend tot Microsoft Office (zoals ook Word en Excel tot Microsoft Office behoren), of werk je met Outlook.com ? En een tweede vraag: met de code die je nu hebt, verschijnt de tekst die in de 'body' moet komen te staan, ook in de body, of verschijnt die bij het onderwerp van de e-mail ?
-
Aanvulling op vorig bericht: Voordat je de macro uitvoert, moet je uiteraard wel de te kopiëren tekst selecteren.
-
Ervan uitgaande: - dat beide Wordbestanden geopend zijn; - dat de naam van het document waarheen je wil kopiëren Docu2.docm is; kun je in het document van waaruit je kopieert deze macro gebruiken: Sub Macro1() ThisDocument.Activate Selection.Copy Documents("Docu2.docm").Activate With Selection .EndKey wdStory .TypeParagraph .PasteAndFormat wdPasteDefault End With End Sub
-
Een eenvoudige en makkelijke oplossing is deze: de celeigenschappen op "Standaard" laten staan en een enkele apostrof invoeren vóór het getal, dus zo: '+32456687 Na invoer (= na gedrukt te hebben op Enter) zie je die apostrof niet staan.
-
Je wil dat de uitkomst van een deling steeds een geheel getal is? Dan moet je daar bij elke deling op controleren en indien nodig de getallen behorend bij die deling opnieuw laten bepalen. Je kunt dan best de getallen van alle opgaven niet in 1 keer laten bepalen maar elk afzonderlijk. Want álle getallen opnieuw laten kiezen kan betekenen dat een andere deling dan weer niet klopt. Als het om een klein aantal opgaven gaat, kun je die aanpassing best handmatig doen. Als je het de macro wil laten doen, dan is het principe: - Controleer of de uitkomst van de deling een geheel getal is. - Is dat niet get geval: --> kies nieuwe getallen en controleer opnieuw de deling. - Is dat wél het geval: --> ga verder met de uitvoering van de macro. Je moet er dan natuurlijk ook voor zorgen dat die controle alleen bij een deling en niet bij andere bewerkingen plaatsvindt.. Een mooie opgave (want niet erg moeilijk) voor degenen die met vba geginnen.
-
Is de tekst waarin zich de problemen voordoen misschien van internet gekopieerd? Als dat het geval is en je plakt die tekst niet "speciaal", dan komt die als HTML in het Worddocument te staan en dan kunnen problemen zoals bij jou zich gemakkelijk voordoen, vooral als je zelf nieuwe alinea's aanmaakt. Controleer eens of het helpt als je dat laatste vermijdt. Probeer anders eens het volgende (nog steeds ervan uitgaand dat de tekst van internet gekopieerd wordt): - Kies in Word: "Plakken Speciaal" --> "Opgemaakte tekst (RTF)", de opmaak blijft dan behouden, maar de HTML-code niet. Als "Opgemaakte tekst (RTF)" niet bij de plakmogelijkheden staat, dan de tekst eerst gewoon plakken, dan knippen, en daarna "speciaal" plakken als "Opgemaakte tekst (RTF)". - Je zou er ook voor kunnen kiezen om in Word de tekst te plakken als "Niet-opgemaakte tekst" of "Niet-opgemaakte Unicode-tekst", maar dan gaat alle opmaak verloren en moet je die op de gewenste plaatsen opnieuw aanbrengen. De zelf aangebrachte opmaak zal normaliter niet snel verloren gaan.
-
Dat kan m.b.v. een inputbox, die behoort tot de basisbeginselen van vba. Option Explicit Sub macro1() Dim a As Integer, b As Integer, c As Integer, d As Integer, x As Integer With Sheets("Blad1") a = InputBox("Laagste getal kolom F ?") b = InputBox("Hoogste getal kolom F ?") c = InputBox("Laagste getal kolom H ?") d = InputBox("Hoogste getal kolom H ?") For x = 9 To 13 .Range("F" & x).Value = Application.RandBetween(a, .Range("H" & x).Value = Application.RandBetween(c, d) Next x End With End Sub
-
@jetu, wat jij wil gaat niet op de manier zoals met de macro in jouw bestand. De reden is dat =aselecttussen() een volatilefunctie is die bij elke wijziging in het blad opnieuw wordt berekend (dus bv. ook als in kolom J de uitkomsten zouden worden ingevuld). Nu je toch een macro wil gebruiken is er een eenvoudige oplossing mogelijk door de getallen in de A- en B-kolom niet in het blad maar door de macro te laten berekenen. Als je niet de formule maar alleen de uitkomsten in de A- en B-kolom plaatst, wijzigen die niet meer als je elders in het blad wat doet. Dat kan bv. zo: Option Explicit Sub macro1() Dim x As Integer With Sheets("Blad1") For x = 9 To 13 .Range("A" & x).Value = Application.RandBetween(0, 5) .Range("B" & x).Value = Application.RandBetween(0, 5) .Range("F" & x).Value = .Range("A" & x).Value .Range("H" & x).Value = .Range("B" & x).Value Next x End With End Sub Je kunt natuurlijk de berekende getallen ook meteen in de F- en H- kolom plaatsen en de A- en B-kolom weglaten. En tenslotte kun je ook de moeilijkheidgraad van de opgaven eenvoudig aanpassen door de macro naar de hoogste en laagste waarde van de getallen in de A- en B-kolom te laten vragen.
-
Stel dat in A10:A20 alle (verwachte) inkomsten/uitgaven staan. Om het totaal van al die bedragen te kennen, typ in A4: =som(A10:A20) Dat wist je waarschijnlijk al. Om te weten welke bedragen van kolom A reeds zijn verwerkt (of 'uitgevoerd' zoals jij het noemt), typ in de overeenkomstige cellen van de B-kolom bv. een x . Het totaal van de bedragen in A10:A20 die zijn verwerkt, is dan (dit kun je typen in A5): =som.als(B10:B20;"x";A10:A20) Als je in plaats van die x-en beslist een optelling wil van de cellen waarvan je de tekst hebt 'vet' gemaakt, dan kan dat wel, maar daarvoor is een functie in vba nodig, dat is veel bewerkelijker.
OVER ONS
PC Helpforum helpt GRATIS computergebruikers sinds juli 2006. Ons team geeft via het forum professioneel antwoord op uw vragen en probeert uw pc problemen zo snel mogelijk op te lossen. Word lid vandaag, plaats je vraag online en het PC Helpforum-team helpt u graag verder!
