• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

versimpelen van macro`s

Status
Niet open voor verdere reacties.

remco0511

Gebruiker
Lid geworden
20 okt 2008
Berichten
32
Hoi,


Ik heb een bestand gemaakt met 3 macro`s maar deze zijn te langzaam of te groot.
Is er een mogelijkheid om deze sneller te krijgen of een simpeler macro.


Remco
 

Bijlagen

Ik heb alleen de eerste aangepast, maar dan heb je een idee. Sowieso is het uitgangspunt: blijf zoveel mogelijk bij Select uit de buurt, want continue cellen selecteren kost de meeste tijd.
Code:
Sub CURSUS()
Dim arr() As Variant
    
    Range("F13:G30").ClearContents
    arr = Array("Excel", "Outlook", "Word", "Windows", "URENVER", "APPLE")
    Range("F13:F18") = WorksheetFunction.Transpose(arr)
    arr = Array("=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,5,0)", "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,6,0)", _
        "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,7,0)", "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,8,0)", _
        "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,9,0)", "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,10,0)")
    Range("G13:G18") = WorksheetFunction.Transpose(arr)

End Sub
 
Kan zelfs met drie opdrachten:
Code:
Sub CURSUS()
    Range("F13:G30").ClearContents
    Range("F13:F18") = WorksheetFunction.Transpose(Array("Excel", "Outlook", "Word", "Windows", "URENVER", "APPLE"))
    Range("G13:G18") = WorksheetFunction.Transpose(Array("=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,5,0)", "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,6,0)","=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,7,0)",_
         "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,8,0)", "=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,9,0)""=VLOOKUP(R3C4,Hulpblad!R1C1:R8c37,10,0)"))
End Sub
 
Als je toch met VBA werkt kun je schrijven/lezen in een Excel werkblad het beste reduceren.

Code:
Private Sub ComboBox1_Change()
    ReDim sp(5, 1)
    sn = Blad2.Cells(1).CurrentRegion
    
    For j = 1 To UBound(sn)
       If sn(j, 1) = ComboBox1 Then Exit For
    Next
    If j > UBound(sn) Then Exit Sub
    
    For jj = 0 To UBound(sp)
       sp(jj, 0) = sn(1, jj + 5)
       sp(jj, 1) = sn(j, jj + 5)
    Next
    
    Blad1.Cells(13, 6).Resize(UBound(sp) + 1, UBound(sp, 2) + 1) = sp
End Sub

of

Code:
Private Sub ComboBox1_Change()
  sn = Blad2.Cells(1).CurrentRegion
    
  For j = 1 To UBound(sn)
    If sn(j, 1) = ComboBox1 Then Exit For
  Next
  If j <= UBound(sn) Then Blad1.Cells(13, 6).Resize(5,2) = Application.Transpose(Application.Index(sn, Application.Transpose(Array(1, j)), Array(5, 6, 7, 8, 9, 10)))
End Sub
 
Laatst bewerkt:
Hoi SNB,

Ik zie dat jij een combobox gebruik, maar ik wil hem met een knop gebruiken.
Hoe moet dit, ik heb nog niet veel verstand van VBA.

Remco
 
Jij hebt in je geplaatste bestand een combobox staan.
 
Hoi SNB,

Het klopt dat er een combobox in de sheet staat die moet met vert.zoeken de gegevens van de werknemer zoeken.

de knoppen voeren andere macro`s uit.

zie bijlage


Remco
 

Bijlagen

  • test.JPG
    test.JPG
    54 KB · Weergaven: 63
Waarom zou je niet alle gegevens voor 1 persoon in 1 keer laten zien ?
 
Hoi

Dit is slechts een deel van mijn sheet ik wil ongeveer zo`n 9 knoppen hebben met ongeveer 25 uitkomsten van vert.zoeken.

Remco
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan