Klein correctie gevraagd

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Is er een manier om te voorkomen dat niet alle textboxen worden gewist. Onderstaande code doet dit namelijk wel.

Het gaat om de volgende code:

Code:
For Each ctl In Me.Controls
        If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then ctl.Value = vbNullString

De enige textbox die niet mag worden gewist is Tb_Totaal_Artikel. Ik kan dit wel doen dmv Tb_Totaal_Artikel = " € 0.00" maar dan moet ik dit overal aanpassen en dan ben ik bang dat de code onduidelijk wordt. Ook kan ik dan zien hoe ik deze wijziging in andere reeds bestaande bestanden kan inbrengen.

Bedankt.
 
Met ctl.Name kun je de naam van de control opvragen.
Voor volledige controle zou ik er zelf zoiets van maken:

Code:
For Each ctl In Me.Controls
    Select Case TypeName(ctl)
        Case "TextBox"
            If ctl.Name <> "Tb_Totaal_Artikel" Then
                ctl.Value = vbNullString
            End If

        Case "ComboBox"
            If <conditie> Then
                ...
                ...
            End If
    End Select
Next ctl
 
Laatst bewerkt:
Ctl_Name kende ik al. Deze werd al door iemand anders mij kenbaar gemaakt in een andere code.

Dom dat ik dat teken <> vergat. Het zegt eigenlijk niets meer en niets minder dan: als de textbox groter of kleiner is dan Ctl_Name... dan de niet genoemde textboxen wissen.

Bedankt Edmoor.

Maar de combobox wordt nu niet gewist.
 
Laatst bewerkt:
<> betekent : is niet gelijk aan .
Het is het tegenovergestelde van = : is gelijk aan.
 
Nog een kleine correctie. De vergelijking <> staat voor Ongelijk aan :)

Edit:
snb was sneller ;)
 
Na goochelen kom ik uit op het volgende:

Code:
For Each ctl In Me.Controls
    Select Case TypeName(ctl)
        Case "TextBox"
            If ctl.Name <> "Tb_Totaal_Artikel" Then
                ctl.Value = vbNullString
            End If

        Case "ComboBox"
            If ctl.Value > vbNullString Then
                ctl.Value = vbNullString
            
            End If
    End Select

    Next ctl
 
Snb en Edmoor. Ja snorry..... Ik las het teken verkeerd. Zal het meteen in mijn woordenboek opnemen.
 
Deze is een beetje overdone:
If ctl.Value > vbNullString Then
ctl.Value = vbNullString


Die If controle is niet nodig dus de tweede regel alleen is voldoende.

Let ook op je inspringpunten: (Zei de cursusleider ;) )
Code:
For Each ctl In Me.Controls
    Select Case TypeName(ctl)
        Case "TextBox"
            If ctl.Name <> "Tb_Totaal_Artikel" Then
                ctl.Value = vbNullString
            End If

        Case "ComboBox"
            ctl.Value = vbNullString

    End Select
Next ctl
 
Laatst bewerkt:
Ik ben even dom geweest. Er gebeurde zaken die niet mochten, maar ik heb het uitgezocht....Ik had de verkeerde sub van het verkeerde bestand gegeven. :o

Heb het wel aangepast en waar het moet werken, werkt het.
 
De inspringpunten..... Laat me raden... dan krijg je foutmeldingen Next zonder For....??

Datgene wat overdone is, ga ik meteen aanpassen.
 
Laatst bewerkt:
En zo is het verzoek om een kleine correctie toch een iets uitgebreidere geworden :)

Inspringpunten zijn trouwens puur voor de leesbaarheid, de compiler trekt zich er niks van aan.
 
Als ik er maar weer van leer. Door oefenen en zelf proberen, leer ik er steeds makkelijker mee om te gaan. Al heb ik nog een HELE lange weg te gaan.

De reden dat ik het aangaf over foutmeldingen, was omdat ik die foutmelding kreeg. Wat ik precies gedaan heb om het weg te krijgen, snap ik dan niet, maar zal wel goed zijn.

Overigens mag ik niet van mij zelf niet met de eer strijken dat ik de oude code waar ik om een verandering vroeg zelf heb gevonden. Deze had ik eerder al gevraagd en kreeg ik van Rudi (WarmBakkertje). Ik wilde er slechts een aanpassing op en daar kwam ik ook niet uit. Wellicht als ik zo de oplossing zag en las, had ik toch te snel opgegeven en is het antwoord logisch.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan