• 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 textboxen optellen

Status
Niet open voor verdere reacties.
Hallo VenA

Heb de achtergrond van de forms gewijzigd.
Begrijp het niet goed (Harry sprak ook al over een zwart vlak) Bij mij staat dat groen
 

Bijlagen

@VenA

In txb 2 onder hdcp komt handicap die zal ingevoerd worden uit het latere program.
In txb 7 onder hdcp moet dan de inhoud van txb 2 maal 3 komen
In txb 8 komt dan het totaal van 6 en 7

Grtjs.
Armand
 
Bedankt Harry,
Het optellen lukt nu perfect.
Maar als ik in bv. TextBox1 een getal (iD-nummer) zet krijg ik in de klassemodule de fout "Types komen niet overeen"

Grtjs.
Armand
 
Kleine aanpassingen in de Klassenmodule.
Code:
Private Sub TxtBx_Change()
Dim ctl As Control
[COLOR=#0000ff]If TxtBx.Tag <> "" Then[/COLOR]
 If (TxtBx.Tag + 1) Mod 4 = 0 Then
  Tt = TxtBx.Tag
   tel = 0
   For Each ctl In frmWedstrijden.Controls
     If TypeName(ctl) = "TextBox" And ctl <> "" [COLOR=#0000ff]And[/COLOR] [COLOR=#0000ff]ctl.Tag <> ""[/COLOR] Then
        If CLng(ctl.Tag) + 3 = Tt + 3 Then tel = tel + ctl.Value
     End If
  Next ctl
   frmWedstrijden("Textbox" & Tt + 3) = tel
 End If
[COLOR=#0000ff]End If[/COLOR]
End Sub
 
Hallo Harry,

Dit werkt perfect.
Maar zou jij mij (indien het niet teveel werk is) even de code in gewone mensentaal kunnen uitleggen.
Ik wil namelijk nog dat wat in txb 2 komt te staan maal 3 krijgen in txb 7 en dan de som van txb 6 en 7 in txb 8.
Misschien kan ik dat dan zelf vinden.

Grtjs.
Armand
 
In het voorbeeld werk ik met de Tag van elke textbox (eigenschap).
Elke textbox in het formulier wordt namelijk aangeduid als TxtBx.
Door elke textbox een unieke tag te geven (of juist drie textboxen met dezelfde tag) weet je welke textbox je kan aansturen.

Ik heb de code voor je aangepast.
 

Bijlagen

@Harry,
Super, dit is exact wat ik nodig heb
Bedankt voor je woordje uitleg. Dit en samen met het beetje dat ik al ken, kan ik zeker verder en verder nog bijleren.

@alle helpers, exceltechneuten
Bedankt voor jullie hulp.

Grtjs.
Armand
 
@Harry,
Toch nog even een vraagje.
Voor wat staat in de code "Case 3, 11 Case 2, 10 Case 6, 14 Case 7, 15"
 
Als je iets in een Textbox zet treed de code in werking, en komt onderstaand stukje code tegen.

Code:
Select Case [COLOR=#0000ff]TxtBx.Tag[/COLOR]
Welke Textbox heb je veranderd?

Case 3 of case 11 ' is het Tag 3? of Tag 11?
doe dan dit
case 2 of 10 ?
doe dan dit
enz.
 
Hallo Harry,

Heb nu geprobeert met een extra serie textboxen.
Dacht dat ik dan gewoon bij elke case een extra "doe je dat" kon zetten (had bv. case 3, 11, 18 gezet), maar dat schijnt niet te werken zo.
In bijlage het bestandje met een extra serie txb's.
Zou je dit ook nog even kunnen aanpassen en dan kan ik door middel van het verschil met het eerdere bestandje te vergelijken de rest wel doen denk ik.

Grtjs.
Armand
 

Bijlagen

Je moet enkel het juiste getal toewijzen aan de Tag en in de 'selecte Case'.
De verhoging is telkens 8 t.o.v. de textbox die er boven staat.

2,10,18
3,11,19
1,9,17
 

Bijlagen

Hallo Harry,

Ik heb dit nu gedaan in de file en als ik in de vierde serie txb's getallen inbreng, komen de uitkomsten in de txb's van de derde serie te staan.

Grtjs.
Armand
 

Bijlagen

De Tag's van de textboxen zijn niet juist.
Bekijk ze stuk voor stuk met de bovenliggende.
De eerste 2 series zijn juist.

De laatste 2 series van 8 niet.
 
Hallo Harry,

Sorry, maar ik zie het niet
Code:
Private Sub TxtBx_Change()
Dim ctl As Control
Tt = TxtBx.Tag
tel = 0
Select Case TxtBx.Tag
    Case 3, 11, 19, 27
        For Each ctl In frmWedstrijden.Controls
          If TypeName(ctl) = "TextBox" And ctl <> "" Then
             If CLng(ctl.Tag) + 3 = Tt + 3 Then tel = tel + ctl.Value
          End If
        Next ctl
      frmWedstrijden("Textbox" & Tt + 3) = tel
    Case 2, 10, 18, 26
     If TxtBx = "" Then
        frmWedstrijden("Textbox" & Tt + 5) = ""
      Else
        frmWedstrijden("Textbox" & Tt + 5) = TxtBx * 3
     End If
    Case 6, 14, 22, 30
      frmWedstrijden("Textbox" & Tt + 2) = Val(frmWedstrijden("Textbox" & Tt)) + Val(frmWedstrijden("Textbox" & Tt + 1))
    Case 7, 15, 23, 31
      frmWedstrijden("Textbox" & Tt + 1) = Val(frmWedstrijden("Textbox" & Tt - 1)) + Val(frmWedstrijden("Textbox" & Tt))
 End Select
End Sub
 
Op het formulier staan Textboxen.
Selecteer er eentje, rechtermuisklik - Eigenschappen - Tag.
 
Hallo Harry,

Gevonden. Bedankt
Dus voor elke serie moet ik eerst de tags aanpassen

Grtjs.
Armand
 
Zo is het precies Armand.
 
Hartelijk dank Harry, voor het werk dat je er hebt ingstoken.
Heb weeral wat bijgeleerd.
Nu ga ik met deze wetenschap, proberen of ik het klaar krijg om ook nog in de andere richting totalen te maken.
Ik bedoel hiermee om van elke serie telkens de txb's 2,3,4,5,6,7 en 8 in een nieuwe serie onderaan op te tellen.
Moest dit na een tijdje zwoegen toch niet lukken, kom ik wel met een nieuwe vraag.

Grtjs.
Armand
 
Hallo Harry,

Ik heb geprobeert om in het frmWedstrijden de iD textbox (Textbox1) te vervangen door een cbo
Code voor de cbo toegevoegd en ook in de UserForm_initialize.
Maar ik krijg de foutmelding "Een variabele is niet gedinieerd" op de "Endrow ="
De bedoeling van dit alles is eigenlijk dat de Hdcp (van Blad1 kolom C) in de textbox onder Hdcp automatisch wordt ingevuld als in de cbo een iD wordt gekozen (van Blad1 kolom B).
Of kan dit ook gebeuren als ik toch niet met een cbo werk en in de textbox onder iD het iDnummer invul.

Grtjs.
Armand
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan