• 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.

Bovenste record (rij) selecteren in een database

  • Onderwerp starter Onderwerp starter Vrt
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Vrt

Gebruiker
Lid geworden
29 okt 2013
Berichten
26
Hi,

ik heb een database (tabel) gemaakt in excel 2013, daaraan zijn slicers gekoppeld waarmee je kunt zoeken naar records die voldoen aan de opgegeven criteria. Nadat ik in de slicers de criteria heb opgegeven wil ik met een macro de bovenste weergegeven record selecteren. Het probleem is dat dit de ene keer bijvoorbeeld rij* 10 is en een volgende keer bijvoorbeeld rij 23 (Afhankelijk van wat is aangegeven in de slicers). Is het mogelijk om een macro dinamisch te maken zodat hij altijd de bovenste weergegeven record selecteerd, onafhankelijk van welke rij* dit record eigenlijk is?


*Met rij bedoel ik het rij-nummer wat wordt aangegeven op het excel werkblad aan de linker kant.
 
Zoiets zou kunnen werken maar een voorbeeldje is beter.

Code:
Sub VenA()
With ActiveSheet.ListObjects("Tabel1")
    For j = 1 To .ListRows.Count
        t = .ListRows(j).Range.SpecialCells(12).Row
        If t > 0 Then
            Application.Goto Cells(t, 1)
            Exit Sub
        End If
    Next j
End With
End Sub
 
Hi, ik was het weekend weg, vandaar dat ik niet meer gereageerd heb. Ik zal morgen even een voorbeeld bestandje plaatsen.

Alvast bedankt :).
 
Ik heb even een voorbeeld database gemaakt. De bedoeling is dat van alle zichtbare rijen de punten worden bijgewerkt door de kolom "punten" over de kolom "totaal punten" te kopiëren.

Als je in de achternaam-slicer de naam Hakkers selecteert en dan op de knop [punten bijwerken] klikt zie je dat hij netjes de punten bijwerkt. Maar selecteer je nu de achternaam Gerritsen en klik je vervolgens op de knop dan zie je dat er niks gebeurt, totdat je het filter annuleert. Dan zie je namelijk dat de punten van de personen met de achternaam Hakkers nog een keer zijn bijgewerkt.

Dat komt omdat ik toen ik deze macro maakte ik dat gedaan heb met "Hakkers" ingesteld als filter, dat betekent dat de macro altijd deze rijen zal bijwerken en niet die worden weergegeven.

De bedoeling is dat de punten alleen worden bijgewerkt in de rijen die worden weergegeven. Feitelijk moet de macro dus de kopiëren/plakken actie alleen uitvoeren in de rijen die niet verborgen zijn.
 

Bijlagen

Ik heb geen XL-2013 dus kan geen tabelslicers gebruiken. In jouw voorbeeldje kan ik niets vinden van wat ik in #3 geplaatst heb. Of je filtert via het standaard filter of via een slicer zal denk niet zo heel veel uitmaken. (de rijen zijn zichtbaar of niet zichtbaar)

Even los van of het in de tabel test moet gebeuren doet deze het.

Code:
Sub VenA()
For Each cl In Columns(3).SpecialCells(2, 1).SpecialCells(12)
    cl.Value = cl.Offset(, 3).Value
Next cl
End Sub
 
Nee, ik had de code die jij opgegeven had ook nog niet toegepast in een macro.

Aangezien ik niet bekend ben met VBA, kun je mij vertellen wat er in die code precies gebeurd, zodat ik het kan toepassen in het document waar ik het nodig heb?
 
Je plaatst een document met VBA en komt nu op de proppen dat je niet bekent bent met VBA? Waar komt dat document dan vandaan?

Kleine uitleg bij #6
Voor elke cel in kolom C Columns(3) als er een getal in staat .SpecialCells(2, 1) en de cel zichtbaar is .SpecialCells(12) dan neem de waarde over van de cel die 3 posities naar rechts staat cl.Offset(, 3).Value.
 
Ik heb die macro opgenomen (record macro), niet zelf geprogrammeerd.

Sorry als ik dat even eerder had moeten melden :S.

Maar ik ga het even proberen. Ik ben wel bekend met programmeren, maar niet met de syntax van VBA.
 
En dus is de vraag bij deze opgelost? <Alt> + <F8> bewerken code erin plaatsen en klaar;)
 
Ik denk het wel ja. Ik heb het nu even geprobeerd in het voorbeeld bestand.

Ik ga nu even kijken of ik het kan toepassen in een grotere database, maar dat moet lukken!

Bedankt :D :thumb:



Als het niet lukt laat ik nog wel weet even wat van me horen.

Trouwens, nog 1 vraagje: Hoe komt het nou dat hij bijvoorbeeld deze code niet uitvoert in de titel balk? Dus Totaal punten niet vervangt door Punten, in de code staat nergens aangegeven bij welke rij hij moet beginnen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan