Ga naar inhoud

bakerman

Lid
  • Items

    381
  • Registratiedatum

  • Laatst bezocht

Alles dat geplaatst werd door bakerman

  1. Je wil het blijkbaar zo eenvoudig mogelijk. Probeer dan onderstaand bestand eens uit. Telkens je het Einduur invult op eender welk werkblad waarvan de naam begint met Persoon wordt de PT automatisch bijgewerkt. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name Like "Persoon*" Then If Not Intersect(Target, Sh.Columns(4)) Is Nothing Then With Sh .Unprotect "pcc2018" For Each pt In .PivotTables pt.PivotCache.Refresh Next .Protect "pcc2018" End With End If End If End Sub KarelG.xlsm
  2. Vermijd het gebruik van Select, Selection, Activate. Het vertraagt de code en is in 99% van de gevallen overbodig. Maak gebruik van de With ..... End With structuur. Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B:E")) Is Nothing Then With ActiveWorkbook.Sheets("Blad1") .Sort.SortFields.Clear .Sort.SortFields.Add Range("F2"), xlSortOnValues, xlDescending, , xlSortNormal With .Sort .SetRange Cells(1).CurrentRegion .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With End If End Sub
  3. @ KarelG Enige reden waarom al je draaitabellen dezelfde gegevensbron hebben ?
  4. Of zoals al eerder gezegd. Formule voor C2 en D2. =INDEX($L$1:$N$12;VERGELIJKEN($B2;$L$1:$L$12;0);KOLOM()-1)
  5. Probeer het eens met deze. Sub test() sn = Blad2.Cells(3, 2).CurrentRegion.Value Set dic = CreateObject("scripting.dictionary") For i = 2 To UBound(sn) dic.Item(sn(i, 2)) = sn(i, 1) Next With Blad1 For Each cl In .Range("D3", .Range("D" & .Rows.Count).End(xlUp)) For Each Key In dic.keys If InStr(1, cl, Key, vbBinaryCompare) > 0 Then cl.Offset(, 1) = dic.Item(Key): Exit For Next Next End With End Sub Kenny1989_Dic.xlsm
  6. Formules verder uitgewerkt. Jasper_II.xlsx
  7. Als je op die manier wil zoeken zal je moeten overschakelen op een combinatie van Index en Vergelijken waarbij het wel mogelijk is om te verwijzen naar een vorige kolom. Dus zoeken in kolom C en resultaat van kolom A weergeven. Jasper.xlsx
  8. Je format van kolom C staat op Tekst ipv Standaard. Fiets 3 is niet aanwezig in de A-kolom van je tabelmatrix op Sheet Producten.
  9. Mogen of niet, hier is er eentje. De UDF in kolom B haalt het rekeningnummer uit de tekst. De Index/Match formule in kolom C zoekt dan een overeenkomst in de tabel. Kenny1989.xlsm
  10. @emielDS Zonder foutafhandeling genereer je een foutmelding als Find geen overeenkomstig nummer kan vinden. Private Sub Annuleren_Click() 'aangeven zoekactie in worksheet Dim fRow With Sheets("Inschrijving") fRow = Application.Match(CLng(flightnummer), .Columns(1), 0) If Not IsError(fRow) Then .Cells(fRow, 1).Resize(, 8).ClearContents Else MsgBox "Geen nummer gevonden" End If End With End Sub
  11. Ik heb een dynamische validatielijst in A4 gezet. Kijk maar eens bij Namen Beheren naar mylist. Onderhoudshandboek_pull down menu.xls
  12. Gewoon een ander ideetje. Door in de TextBox letters in te typen wordt kolom A gefilterd. De Wis-knop verwijdert de tekst uit de TextBox en wist het Autofilter. Niko.xlsm
  13. OK, ik heb het je makkelijk gemaakt. Onderstaande code zet alles om in hoofdletters en voegt een spatie toe als er een postcode tussen staat zonder spatie. Daarna wordt de samenvatting op Blad3 gezet. Sub Uniform_Samenvatten() sn = Blad1.Cells(1).CurrentRegion.Value Set dic = CreateObject("scripting.dictionary") With CreateObject("VBScript.RegExp") For i = 2 To UBound(sn, 2) For ii = 2 To UBound(sn) If sn(ii, i) <> vbNullString Then sn(ii, i) = UCase(sn(ii, i)) .Pattern = "\d{4}[A-Z]{2}" .Global = True If .test(sn(ii, i)) Then sn(ii, i) = Left(sn(ii, i), 4) & " " & Right(sn(ii, i), 2) If Not dic.exists(sn(ii, i)) Then dic.Add sn(ii, i), 1 Else dic.Item(sn(ii, i)) = dic.Item(sn(ii, i)) + 1 End If End If Next Next End With With Blad3 .Cells(1).CurrentRegion.ClearContents .Cells(1).Resize(dic.Count, 2) = Application.Transpose(Array(dic.keys, dic.items)) .Cells(1).CurrentRegion.Sort .Cells(1), xlAscending End With Blad1.Cells(1).Resize(UBound(sn), UBound(sn, 2)) = sn End Sub
  14. Neen, dit is een invoer probleem van jouw zijde. Net zoals jij postcodes invoert met hoofd- en kleine letters door elkaar voer jij ook postcodes in met en zonder spatie. Voor jou lijken deze postcodes allemaal dezelfde maar voor Excel zijn deze eigenlijk allemaal uniek. 4536 AH is niet hetzelfde als 4536AH net zoals 4561rj niet hetzelfde is als 4561RJ. Waar jij dus voor moet zorgen is dat alle postcodes op dezeflde manier ingevoerd worden.
  15. Resultaten komen op Blad3. Met hoofdletters en kleine letters heb ik rekening gehouden in de nieuwe code. Hou er echter rekening mee dat bv 4567 AH verschillend wordt gezien dan 467AH.
  16. Met een beetje VBA is dit zo opgelost. Sub tst() sn = Blad1.Cells(1).CurrentRegion.Value With CreateObject("scripting.dictionary") For i = 1 To UBound(sn, 2) For ii = 1 To UBound(sn) If sn(ii, i) <> vbNullString Then If Not .exists(sn(ii, i)) Then .Add sn(ii, i), 1 Else .Item(sn(ii, i)) = .Item(sn(ii, i)) + 1 End If End If Next Next Blad1.Cells(1, 26).CurrentRegion.ClearContents Blad1.Cells(1, 26).Resize(.Count, 2) = Application.Transpose(Array(.keys, .items)) Blad1.Cells(1, 26).CurrentRegion.Sort Blad1.Cells(1, 26), xlAscending End With End Sub
  17. Er ontbreekt een backslash aan het eind van je TempFilePath.. En waarom gebruik je 2 externe subs om je Pdf te maken en te verzenden ?
  18. Gebruik Application.InputBox dan kan je het type invoer bepalen. Vermijd het gebruik van onnodige variabelen, het maakt je code toch maar onleesbaar.
  19. If sn(i, 1) <> vbNullString And sn(i, 1) < Date Then msg = msg & "Cel $C$" & i & vbLf moet zijn If sn(i, 1) <> vbNullString And sn(i, 1) < Date Then msg = msg & "Cel $C$" & i + 1 & vbLf
  20. Of dit in Thisworkbook module zodat je enkel een melding krijgt van alle data bij het openen v/h bestand. Private Sub Workbook_Open() With Blad1 sn = .Range("C2", .Range("C" & .Rows.Count).End(xlUp)) End With For i = 1 To UBound(sn) If sn(i, 1) <> vbNullString And sn(i, 1) < Date Then msg = msg & "Cel $C$" & i & vbLf Next If msg <> vbNullString Then MsgBox "Volgende data vervallen binnen het jaar." & vbLf & vbLf & msg End Sub
  21. Foto's in je bestand zetten zou ik ten sterkste afraden aangezien dit de grootte van je bestand nadelig gaat beïnvloeden. Aangezien het om een fiche gaat zou ik er een ActiveX-ImageObject inzetten dat je kan laden met LoadPicture("volledig pad naar je foto") Het automatisch laten wisselen van foto doe je dan met een Change-event macro die reageert op de verandering van huisnummer.
  22. Maak er bij Namen een Dynamische Validatielijst van. Op die manier kan je fruitsoorten toevoegen en verwijderen zonder dat je steeds je formule moet aanpassen.
  23. Rechtsklik op de tab v/h betreffende werkblad en selecteer Programmacode weergeven.
  24. Probeer maar eens op deze manier. Private Sub PDF_rapport_maken() Dim pad As String Dim naam As String Dim foldername As String foldername = Sheets("voorblad").Range("a25").Value & "weekrapporten BOUWDIREKTIE" pad = foldername & "\" naam = "weekrapport BOUWDIREKTIE " & Sheets("voorblad").Range("y8").Value & " WK-" & Sheets("voorblad").Range("y10").Value & Format$(Now, " yyyy-mm-dd ") On Error Resume Next If Dir(foldername) = "" Then MkDir (foldername) myarr = Array("voorblad", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag") For Each elm In myarr If elm = "voorblad" Then Sheets(elm).PageSetup.PrintArea = "$A$1:$AC$58" Else Sheets(elm).PageSetup.PrintArea = "$A$1:$AD$125" End If Next Sheets(Array("voorblad", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pad & naam, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ :=False, OpenAfterPublish:=True Worksheets("maandag").Select End Sub
  25. 1. Select op zich activeert geen werkblad, het selecteert enkel een object. Goto doet dit wel. 2. Jij hebt daarom ook 3 functies nodig om je resultaat te halen (Activate - Find - Select) 3. Goto heeft een Scroll-funtie, Select niet. 4. Als jouw code de datum niet vind ga je in Debug terwijl mijn code de fout opvangt. 5. De variabele is inderdaad een variant omdat deze ook een fout moet kunnen accepteren. Als je deze zou instellen als een Integer zou je in geval van een fout in Debug gaan. De Variant versie kan je beide aannemen en met de IsError-functie kan je de waarde bepalen en de juiste actie ondernemen.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.