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

"Kopteksten" uit sheet wordt in txtbox geplaatst wanneer er niets wordt ingevuld!!!

Status
Niet open voor verdere reacties.

CygneVoler

Gebruiker
Lid geworden
15 mei 2015
Berichten
234
Hoi Excellers,

Ik hoop dat ik met mijn "titel"regel duidelijk maak wat er gaande is.
Hiervoor is het wellicht handig om de bijgevoegde file te openen.

Het gaat om de stap Bewerken!

Wanneer je het invulrondje aanklikt met "Bewerken" wordt een "blanco" uitvouwregel zichtbaar. (dropdownmenu) en de groene button "Bewerken".
Wanneer je alleen de groene button indrukt, wordt de tekst van de labels uit de sheet, ingevuld in de tekstvelden.
Dit is uiteraard niet wenselijk omdat je hiermee de hele "sheet" in de "soep" kunt laten lopen.

De volgende code heb ik ingevoerd om dit te voorkomen. En dat werkt (deels)

Code:
Private Sub cmbInvoer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If cmbInvoer = Empty Then If MsgBox("Je kunt geen lege regel bewerken!!!" & vbCrLf & " " & vbCrLf & "Selecteer het item dat je wilt bewerken " & vbCrLf & "via de dropdownmenu-regel!", vbOKOnly + vbCritical, "Regel bewerking is leeg!") Then Exit Sub
End Sub

Wanneer ik na deze melding wederom op de groene button Bewerken druk, wordt de label tekst alsnog in de lege velden geplaatst.

Heeft er iemand suggesties om dit te voorkomen?

Alvast hartelijk dank voor het meedenken.

Coos
 

Bijlagen

Testen of er een keuze is gemaakt in de combobox.
Code:
Private Sub cmb_Bewerken_Click()
Frame3.Visible = True
Application.ScreenUpdating = False
[COLOR=#ff0000]If cmbInvoer.ListIndex > -1 Then[/COLOR]
With Sheets("Artikelen")
blabla
blabla
end with
[COLOR=#ff0000]end if[/COLOR]

Ps. Je kan je het gemakkelijker maken door de textboxen te laten vullen door de keuze van de combo i.p.v. de knop bewerken.
Voor mij is het daar nu te laat voor om het allemaal aan te passen.

bv:
Code:
private sub combobox1_change()
if combobox1.listindex > -1 then
for j  = 1 to 8
me("T"&j).visible =true
me("T"&j) = combobox1.list(combobox1.listindex,j-1)
next j
end if
end sub
 
Laatst bewerkt:
Hoi Harry, bedankt voor je snelle reactie, maar wanneer ik jouw code invul en dan de button nogmaals indruk, wordt ook de Labeltekst in de userform weggehaald.
Wel een oplossing, maar ook niet wenselijk:D
 
Zag het onderste deel van je eerdere bericht niet, sorry!:(
Maar idd daar zit je niet direct aan te denken om alles weer om te gooien. Je hebt wel gezien dat er twee keuze rondjes zijn?
Nieuw en Bewerken? Of heeft dat niets met jouw advies-opmerking te maken door de keuze van een combo?
Maar is er wel een oplossing voor om te voorkomen dat de tekst weggehaald wordt?
 
Hoi,
Probeer eens of dit voldoende is:
Voeg het rode gedeelte toe in dit stukje bestaande code.
Code:
Private Sub Opt2_Click()
If Opt2 Then
    Frame2.Visible = True
    Frame3.Visible = False
    Cmd_Opslaan.Visible = False
    [COLOR="#FF0000"]cmb_Bewerken.Enabled = False[/COLOR]
    cmbInvoer.RowSource = "Magazijn"
End If
End Sub
En voeg volgend stukje nieuwe code toe.
Code:
Private Sub cmbInvoer_Change()
If cmbInvoer.Value = "" Then
cmb_Bewerken.Enabled = False
Else
cmb_Bewerken.Enabled = True
End If
End Sub
 
@Dotchie

ipv 5 regels code:

Code:
Private Sub cmbInvoer_Change()
  cmb_Bewerken.Enabled = cmbInvoer.Value <> ""
End Sub
 
Gebruik:

Code:
Private Sub Opt2_Change()
    Frame2.Visible = Opt2
    Frame3.Visible = Not Opt2
    Cmd_Opslaan.Visible = Not Opt2
    If Opt2 Then cmbInvoer.List = Sheets("artikelen").Cells(1).CurrentRegion.Value
End Sub

* zet de eigenschap .columnheads op false (want die werkt niet jofel (een bekende bug).
* vermijd rowsource, listfillrange en additem om een listbox/combobox te vullen
* de initialize code is overbodig als je deze eigenschappen gewoon in het ontwerp van het userform vastlegt.
* zo gauw je VBA gebruikt zijn benoemde gebieden overbodig: currentregion is per definitie dynamisch.; benoemde gebieden zijn een hulpmiddel voor gebruikers die niet met VBA willen/kunnen werken.
* van andere gebeurtenisssen dan _Change is onduidelijk wanneer ze precies worden uitgevoerd: dat kan tot ongewenste effekten leiden. Ergo: liever geen Private Sub cmbInvoer_Exit(ByVal Cancel As MSForms.ReturnBoolean) gebruiken.
 
@Philiep en @Harry ik vind het een goede oplossing om de groene button niet actief te laten zijn als de dropdownregel niet ingevuld is. Je wordt nu "gedwongen" om hier iets te selecteren. Slim:thumb:
@Harry wanneer ik jouw code invoer blijft het "probleem" hetzelfde.
Dan geeft je nog een aantal nuttige tips Harry! Om er ook iets van te leren zou je me kunnen zeggen wat de reden kan zijn? De rowsource heb ik btw aangepast. En de _Exit is met de aanpassing van Philiep overbodig geworden. Ook hiervan zou ik graag willen weten waarom het beter is om deze optie te vermijden!
Voor zover beide hartelijk dank.
 
:thumb: Zo is het ook Harry, maar er zijn twee dingen die, als je wilt natuurlijk, me nader wilt toelichten:
#8/*3 Initialize code! ALs ik de userform aanroep wil ik toch alleen maar dat zien wat ik nu zie? Hoe kan ik dat dan zonder Initialize inbouwen?
#8/*4 over welke benoemde gebieden heb je het nu? En het is een juiste constatering dat ik nog veel moet leren en dus niet te veel af weet van VBA! Daarom ben ik ook blij met een forum als deze waar iedereen bereid is om je advies te geven! En meestal leer je van de fouten die je maakt! Ik leer veel!:D

Hopelijk nog meer!
 
Hoi,
De vraag is wel niet aan mij gericht maar wat Snb bedoeld is het volgende (denk ik)
Voor #8/*3
Dit stukje code is overbodig want je kan dit instellen bij de eigenschappen van de betreffende besturingselementen.
Code:
Private Sub UserForm_Initialize()
With Me
    .Frame2.Visible = False
    .Frame3.Visible = False
    .Cmd_Opslaan.Visible = False
    .Cmd_Verwijderen.Visible = False
    .Cmd_Annuleren.Visible = False
  End With
End Sub
Voor #8/*4
Je hebt een lijst bij namen beheren met de naam Magazijn,als je het stukje code van Snb gebruikt is dit ook overbodig want zoals Snb al aangaf is currentregion per definitie dynamisch.
Code:
If Opt2 Then cmbInvoer.List = Sheets("artikelen").Cells(1).CurrentRegion.Value
 
Philiep fijn dat je reageert. Eigenlijk heb ik alles wel aangepast ook #8/*4 (had ik al gedaan). Blijft alleen #8/*3 open. En dat weet ik niet. Maar wellicht gaat het zo ook lukken.
 
Ik kom toch nog even terug bij jullie. De columnhead staat op false, de Opt2-regel is ook aangepast maar het probleem waar ik mee begon, (#1) is dan nu weliswaar opgelost via #2 #5 #6 alleen wanneer ik de combobox "aanroep" staat de eerste regel van sheet "Artikelen" uiteraard ook in de combobox. Als ik die selecteer ben ik eigenlijk weer terug bij het begin dat de label tekst wordt herhaald in de textboxen.
Hebben jullie daar nog een suggestie voor?

Coos
 
#8_4.

Verwijder in de eigenschappen van de combo 'listfillrange'.
Met onderstaande code vul je de combobox in de initialize().
Code:
combobox1.list = sheets("bladnaam").cells(1).currentregion.specialcells(2).offset(1).specialcells(2).value
 
Hoi Harry ik vind niets over "listfillrange" of index of autoload in de eigenschappen vd combobox. Wat doe ik niet goed?
 
Laatst bewerkt:
Hoi,
Eventjes aan het prullen geweest met uw bestandje uit postje #1
Met deze stukjes code zou het moeten lukken, zie bijlage.
(Voor verbeteringen vatbaar natuurlijk, ben niet de slimste van het forum:p)
Code:
Private Sub Opt2_Click()
If Opt2 Then
    cmbInvoer.Value = ""
    Frame2.Visible = True
    Frame3.Visible = False
    Cmd_Opslaan.Visible = False
   Frame2.Visible = Opt2
    Frame3.Visible = Not Opt2
    Cmd_Opslaan.Visible = Not Opt2
    cmb_Bewerken.Enabled = cmbInvoer.Value <> ""
    If Opt2 Then cmbInvoer.List = Sheets("ARTIKELEN").Cells(2).CurrentRegion.Offset(1).Value

End If
End Sub
Code:
Private Sub cmbInvoer_Change()
If cmbInvoer.Value <> cmbInvoer.MatchFound Then
cmb_Bewerken.Enabled = False
Else
cmb_Bewerken.Enabled = True
End If
End Sub
 

Bijlagen

Philiep hartelijk dank voor je medewerking. Je bent dan wel niet de slimste van het forum, je bent in ieder geval slimmer dan ik :o Ik ga er weer mee aan de slag.
 
Het moest 'Rowsource' zijn wat ik bedoelde.
Test deze versie eens.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan