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

Een tabel maken op een tabblad waar een userform opdraait

Status
Niet open voor verdere reacties.

davylenders123

Gebruiker
Lid geworden
20 jun 2010
Berichten
902
Ik heb een bestand gemaakt met een invulformulier via userform
Dit doet allemaal wat het moet doen.
Enkel wil ik nu op de lijst een tabel zetten door ctrl+L te drukken.
Dan staat er een lijst in , maar als ik dan de userform uitvoer worden de gegevens niet meer correct weggeschreven.

In bijlage het bestand zonder de lijst.

Hoe kan ik dit oplossen ?
 

Bijlagen

  • Binnenkomst.xlsm
    73 KB · Weergaven: 32
Dat komt omdat je bij elke optie die je aanklikt een nieuwe regel aanmaakt... Elke option button is in jouw macro een eigen sub dus op het moment dat je die aanklikt schrijft deze op een nieuwe regel weg. Ik zou de groepen OB's een groepnaam geven en het wegschrijven in 1 enkele sub onderbrengen.
 
TitaTovenaar dank voor je snelle reactie.:thumb:

Hoe begin ik daar aan ?
Ik zoek meestal stukjes code en probeer deze werkende te krijgen voor mijn situatie.
Echt code schrijven is nog niet echt iets voor mij.
Kan je me een beetje op weg helpen hoe ik dit juist moet doen ?
 
Elke keer als ik een optie aanklikt gaat er een private sub werken, die zoekt naar de laatste regel en zet dan in een bepaalde cel direct de waarde, jij heb dus zowat 70 private sub's achter die userform zitten. dat wordt, voor mij dan, geen eenvoudig klusje. Daarbij komt dat hij wel werkt zonder tabel omdat in een gewoon werkblad hij telkens in dezelfde kolom(B) de laatste regel zoekt, terwijl jouw weg schrijf actie in een tabel telkens een regel toevoegt, die door de laatste regel zoeker ook daadwerkelijk wordt gezien als laatste regel en dan dus op de volgende regel de waarde wegschrijft. Dus je zou er voor kunnen kiezen GEEN tabel te maken van je nieuw binnengekomen artikelen, dan werkt het vrijwel probleemloos.
 
Ik zou hier een tabel op willen om te kunnen sorteren op artikel,type,bonnummer,depot of datum.
Door met slicer te werken per onderdeel.
Maar voor zover mijn kennis loopt , kan je enkel een slicer gebruiken als je een tabel hebt gemaakt.

Ik heb er nu eens een tabel opgezet en de slicer 's toegevoegd die ik erin zou willen.
Kan ik zoiets ook op een andere manier oplossen ? Zonder een tabel te moeten aanmaken?

Ik wil deze werking ook nog gaan gebruiken voor een 5 tal andere bestanden.

Of zou het makkelijker zijn dat je een kleiner versie hebt van de userform om me op weg te helpen.
Heb de userform ingekort en het bestand toegevoegd .
Heb er nog 8 in zitten nu.
 

Bijlagen

  • Binnenkomst verkorte versie.xlsm
    59,7 KB · Weergaven: 17
  • Binnenkomst met tabel.xlsm
    78,1 KB · Weergaven: 22
Het kan allemaal wel wat eenvoudiger. Maak slim gebruik van de objecten.

Voor het wegschrijven in een tabel is dit voldoende
Code:
Private Sub cmmndToevoegen_Click()
  If txtDatum.Value <> "" Then
    Dim ar(1 To 7)
    For Each fr In Me.Controls
      If TypeName(fr) = "Frame" Then
        For Each ob In fr.Controls
          If TypeName(ob) = "OptionButton" Then
            If ob Then
              ar(fr.Tag) = ob.Caption
              Exit For
            End If
          End If
        Next ob
      End If
    Next fr
    ar(1) = Format(txtDatum.Value, "mm-dd-yyyy")
    ar(5) = txtBonnummer
    Sheets("Nieuw_binnengekomen").ListObjects(1).ListRows.Add.Range.Resize(, 7) = ar
  End If
End Sub
 

Bijlagen

  • Binnenkomst (1).xlsm
    58 KB · Weergaven: 28
VenA :thumb:

Dit is hem , hier kan ik meer verder.

Beide hartelijk dank voor jullie hulp in deze :thumb::thumb:
 
Een redelijk geoptimaliseerd bestandje met wat controles en nog veel minder code.
 

Bijlagen

  • Binnenkomst.xlsb
    56,1 KB · Weergaven: 31
Laatst bewerkt:
VenA

De kalender is een echte verbetering.
Maar de controles die erin zitten zou ik eruit willen krijgen.:eek:
Maar dit lukt me niet echt , heb al verschillende zaken uitgeschakeld en ingeschakeld maar kom er niet uit.


Alle velden dienen niet altijd te worden ingeven.
Daarom zou ik de controle op de bon nummer eruit willen halen.
Ook de vraag om nog een nieuwe aan te maken mag eruit , is makkelijker dat je ze gewoon achter elkaar kan ingeven.
Er wordt een bon ingeven met meerder producten op , en dan is het makkelijker om kleine aanpassingen aan de userform te doen en opnieuw op toevoegen te klikken.

Heb de code nu zo staan , maar loopt vast op "If LblDatum.Value <> "" Then"
Ik heb al gevonden dat daar geen .Value kan staan normaal , maar weet niet wat ik hier dan wel moet zetten.

Code:
Private Sub cmmndToevoegen_Click()

If LblDatum.Value <> "" Then
  Dim ar(1 To 7)
  For Each fr In Me.Controls
    If TypeName(fr) = "Frame" Then
      For Each ob In fr.Controls
        If TypeName(ob) = "OptionButton" Then
          If ob Then
            ar(fr.Tag) = ob.Caption
            Exit For
          End If
        End If
      Next ob
    End If
  Next fr

  ar(1) = Format(LblDatum, "mm-dd-yyyy")
  ar(5) = txtBonnummer
  Sheets("Nieuw_binnengekomen").ListObjects (1)
  'With Sheets("Nieuw_binnengekomen").ListObjects(1)
    'ar1 = .HeaderRowRange
    'For j = 1 To UBound(ar)
    '  If ar(j) = "" Then
    '    MsgBox ar1(1, j) & " is niet gekozen/ingevuld"
    '    Exit Sub
    '  End If
    'Next j
    '.ListRows.Add.Range.Resize(, 7) = ar
  'End With
    
 ' If MsgBox("Opdracht verwerkt, nog een opdracht", vbYesNo, "Nieuwe invoer") = vbYes Then
  '  For Each ct In Me.Controls
   '   If TypeName(ct) = "OptionButton" Then ct.Value = 0
    '  If TypeName(ct) = "TextBox" Then ct.Value = ""
     ' LblDatum = Format(Date, "dd-mm-yyyy")
    'Next ct
   'Else
   ' Unload Me
  End If
End Sub
Private Sub LblDatum_Click()
  Kalender.Show
End Sub
Private Sub UserForm_Initialize()
  LblDatum = Format(Date, "dd-mm-yyyy")
End Sub
 
De controle If LblDatum.Value <> "" Then is niet nodig omdat er altijd een datum staat. Het is een Label en deze kan je alleen vullen met de kalender.

Code:
Private Sub cmmndToevoegen_Click()
  Dim ar(1 To 7)
  For Each fr In Me.Controls
    If TypeName(fr) = "Frame" Then
      For Each ob In fr.Controls
        If TypeName(ob) = "OptionButton" Then
          If ob Then
            ar(fr.Tag) = ob.Caption
            Exit For
          End If
        End If
      Next ob
    End If
  Next fr

  ar(1) = Format(LblDatum, "mm-dd-yyyy")
  ar(5) = txtBonnummer
  Sheets("Nieuw_binnengekomen").ListObjects(1).ListRows.Add.Range.Resize(, 7) = ar
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan