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

Userform: gefilterde tabel om combobox op te vullen

Status
Niet open voor verdere reacties.

SjofaaSj

Gebruiker
Lid geworden
24 feb 2014
Berichten
44
Ik heb 2 vragen

1/
In de oranje tabel staan een aantal mensen die niet langer relevant zijn (gemarkeerd met 'x' in kolom 'OUT').
Ik wil de oranje combobox op de userform invullen met
- enkel de niet gemarkeerde records
- unieke waarden
- alfabetisch gesorteerd

De laatste 2 voorwaarden zijn al opgenomen in de code, maar ik slaag er niet in om enkel de relevante lijnen op te lijsten.
Aan de hand van de keuze moeten de persoonsgegevens worden ingevuld (behalve de factor die ik niet wil tonen).

2/
Daarna wordt aan de hand van de blauwe droplist een type gekozen (dat gekoppeld is aan een rating die ook niet zichtbaar mag zijn). In het groene veld komt het product van factor en rating waarna alles wordt weggeschreven in de groene tabel zodra bevestigd wordt.


Kan iemand me assisteren hierbij aub?
 

Bijlagen

Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Sheets("DATA").Range("T_TYPE[TYPE]").SpecialCells(2).Value
    
    sn = Sheets("DATA").Range("T_USERS[#Data]")
    
    With CreateObject("System.Collections.ArrayList")
        For j = 1 To UBound(sn)
          If Not .contains(sn(j, 1)) And sn(j, 3) <> "x" And sn(j, 1) <> "" Then .Add sn(j, 1)
        Next
        .Sort
        
        ComboBox2.List = .toarray()
    End With
End Sub
 
Dankjewel SNB, lukt perfect hiermee (as usual!).

Hoe kan ik de textboxen nog invullen?
Misschien is er een beter manier omdat de basisgegevens in een tabel staan,

Momenteel heb ik er dit van gemaakt (maar is mogelijks ietwat omslachtig)

Code:
Private Sub ComboBox2_Change()
    Dim myTbl As Excel.ListObject
    Dim cntRow As Long, cntCol As Long
    Dim rngTbl As Range, rngCol As Range
    Dim rng1 As Range, rng2 As Range, rng3 As Range
    Dim i As Integer
'set parameters
    Set myTbl = ActiveSheet.ListObjects("T_USERS") 'tabel
    With myTbl
        cntRow = .ListRows.Count
        cntCol = .ListColumns.Count
        Set rngTbl = .DataBodyRange 'volledige tabel
        Set rngCol = Range(myTbl & "[NAME]")
        Set rng1 = Range(myTbl & "[FULLNAME]")
        Set rng2 = Range(myTbl & "[DEPT]")
        Set rng3 = Range(myTbl & "[REGION]")
    End With
'find ColRow
    For i = 1 To cntRow
        If rngCol.Cells(i, 1) = Me.ComboBox2.Value Then
            Me.TextBox2.Value = rng1.Cells(i, 1)
            Me.TextBox3.Value = rng2.Cells(i, 1)
            Me.TextBox4.Value = rng3.Cells(i, 1)
            Exit For
        End If
    Next i
    
End Sub

En het wegschrijven op de sheet na 'CONFIRM' duurt me precies ook wel lang...?
 
Laatst bewerkt:
Voor wie het interesseert, dit is het uiteindelijk geworden.

Het ophalen van gegevens uit de tabel gaat nog relatief eenvoudig.
Maar voor het trage wegschrijven heb ik geen workaround gevonden.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan