Code wil niet berekenen op userform

Status
Niet open voor verdere reacties.

Doohan

Gebruiker
Lid geworden
20 mrt 2012
Berichten
374
Beste Helper,

Ik ben een formulier aan het maken om de tegendruk in kanalen uit te rekenen. Zie bijlage.
Er staan meerder textboxen op mijn formulier waarin ik de breedte, de hoogte en de lengte van een kanaal op kan geven.
Als ik op de bereken button klik dan zouden er 5 dezelfde berekeningen plaats moeten vinden echter vinden er wel berekeningen plaats ik vermoed 5 want ik krijg geen error. maar op een of andere manier lijkt het erop dat niet al mijn labels goed gevuld worden. de eerste regel met textboxen tbv. de berekening gaan wel goed

Enige hulp zou ik wel kunnen waarderen.
Alvast vriendelijk dank,
groet Martin
 

Bijlagen

  • Engineering_Book(helpmij).xlsm
    53,8 KB · Weergaven: 37
Al je de On Error eruit haalt zie je vanzelf waar het fout gaat. Je kan beter controleren of er getallen in de textboxen staan dan controleren of een textbox gevuld is.

Code:
If IsNumeric(txtBK1.Value) And IsNumeric(txtHK1.Value) Then
 
Dank Vena,

Ik zal in het vervolg jouw suggestie doen. Ik heb het direct ook hierin mijn code gedaan maar dat is niet de oplossing.
het resultaat is uiterlijk hetzelfde. als je het formuliertje runt zie je wat er gebeurt.
 
@Vena
hierbij het aangepaste bestand
 

Bijlagen

  • Engineering_Book(helpmij).xlsm
    53,7 KB · Weergaven: 35
Ik zie het VenA. Soms heb ik een extra oog nodig om mijn blunder uit te lichten. Bedankt. Het is opgelost

Groet Martin
 
volgens mij is deze ocde voor het hele userform voldoende:

Code:
Private Sub UserForm_Initialize()
    With cboQKoelluchtuittrede
        .List = Array("m³/s", "m³/min", "m³/hr")
        cboComstionFlowQ.List = .List
        .ListIndex = 0
    End With
    cboComstionFlowQ.ListIndex = 0
    
    cboLuchtTemp.List = Sheets("luchtdata").Cells(4, 1).CurrentRegion.Value
End Sub

Private Sub txtlQKoelluchtuittrede_Change()
    M_knop
End Sub

Private Sub txtComstionFlowQ_Change()
    M_knop
End Sub

Sub M_knop()
    butTegendruk.Visible = txtlQKoelluchtuittrede <> "" And txtComstionFlowQ <> ""
End Sub

Private Sub cboLuchtTemp_Change()
    For j = 1 To 3
        frmTegendrukVentilatie("lblAir" & j).Caption = cboLuchtTemp.Column(j)
    Next
End Sub

Private Sub butTegendruk_Click()
  VentFlowTot = txtComstionFlowQ / 60 ^ cboComstionFlowQ.ListIndex + txtlQKoelluchtuittrede / 60 ^ cboQKoelluchtuittre.ListIndex
        
  For j = 1 To 5
    sn = Array(Replace(Me("txtBK" & j), ".", ","), Replace(Me("txtHK" & j), ".", ","), Replace(Me("txtLK" & j), ".", ","))
    If IsNumeric(sn(0)) And IsNumeric(sn(1)) Then
      y = CDbl(Round(VentFlowTot / (sn(0) * sn(1)), 2))
       
      Dh1 = (2 * sn(0) ^ 2) / (2 * sn(0))
      Me("lblRE" & j).Caption = Round(CDbl(y * Dh1 / cboLuchtTemp.Column(3)), 0)
    End If
        
    If IsNumeric(sn(2)) Then Me("lblDP" & j).Caption = CDbl(CDbl(0.016 * sn(2) / Dh1) * 0.5 * cboLuchtTemp.Column(1) * y ^ 2)
  Next
End Sub
 
Laatst bewerkt:
Dank SNB,

Je code ziet er gelikt uit ik ga hem maandag proberen te begrijpen. Ik heb snel ff een test gedaan. En kom tot de conclusie dat je code niet werkt. Fout 424 op deze regel
Code:
  VentFlowTot = txtComstionFlowQ / 60 ^ cboComstionFlowQ.ListIndex + txtlQKoelluchtuittrede / 60 ^ cboQKoelluchtuittre.ListIndex
.
Maandag weer verder.
thks voorlopig houd ik het nog even bij mijn zeer uitgebreid en veel te groot stukje code.

Groet Martin
 
lees de regel 1 keer langzaam en je ziet als ik in ,5 sek. waar de schoen wringt.
Debugging is de beste manier om een taal te leren.
 
Laatst bewerkt:
Zoals ik al eerder zei, bedankt voor de prachtige code. Het koste mij 2 minuten voordat ik een paar vergeten letters tegenkwam.
Dan ga ik nu het stukje vergeten code welke de snelheid weergeeft van het medium hierin proberen te herstellen.

bedankt SNB.

Dit is een zeer grote les in effectiviteit. Het zal wel weer ff duren voor het bij mij goed is ingedaald.

Groet Martin
 
Toch nog e 1 vraagje betreffende dit formulier Op 1 of andere manier lukt het dus niet om getallen kleiner dan 1 in te vullen in de kanaal afmeting txtboxen de code ziet er nu zo uit
Code:
Private Sub UserForm_Initialize()
    With cboQKoelluchtuittrede
        .List = Array("m³/s", "m³/min", "m³/hr")
        cboComstionFlowQ.List = .List
        .ListIndex = 0
    End With
    cboComstionFlowQ.ListIndex = 0
    
    cboLuchtTemp.List = Sheets("luchtdata").Cells(4, 1).CurrentRegion.Value
End Sub

Private Sub txtlQKoelluchtuittrede_Change()
    M_knop
End Sub

Private Sub txtComstionFlowQ_Change()
    M_knop
End Sub

Sub M_knop()
    butTegendruk.Visible = txtlQKoelluchtuittrede <> "" And txtComstionFlowQ <> ""
End Sub

Private Sub cboLuchtTemp_Change()
    For j = 1 To 3
        frmTegendrukVentilatie("lblAir" & j).Caption = cboLuchtTemp.Column(j)
    Next
End Sub

Private Sub butTegendruk_Click()
  VentFlowTot = txtComstionFlowQ / 60 ^ cboComstionFlowQ.ListIndex + txtlQKoelluchtuittrede / 60 ^ cboQKoelluchtuittrede.ListIndex
        
  For j = 1 To 5
    sn = Array(Replace(Me("txtBK" & j), ".", ","), Replace(Me("txtHK" & j), ".", ","), Replace(Me("txtLK" & j), ".", ","))
    If IsNumeric(sn(0)) And IsNumeric(sn(1)) Then
      y = CDbl(Round(VentFlowTot / (sn(0) * sn(1)), 2))
       
      Dh1 = CDbl(2 * sn(0) * sn(1) / (sn(0) + sn(1)))
      Me("lblRE" & j).Caption = Round(CDbl(y * Dh1 / cboLuchtTemp.Column(3)), 0)
      Me("lblvK" & j).Caption = Round(CDbl(y), 2)
    End If
        
    If IsNumeric(sn(2)) Then Me("lblDP" & j).Caption = CDbl(CDbl(0.016 * sn(2) / Dh1) * 0.5 * cboLuchtTemp.Column(1) * y ^ 2)
  Next
End Sub
 
Toch maar even bestandje bij gedaan.
 

Bijlagen

  • Engineering_Book(helpmij).xlsm
    45,6 KB · Weergaven: 34
ik sluit dit lijntje maar na uitblijven verdere reacties en maak er wel millimeters van. Is niet zo mooi maar ik kan ieder geval verder.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan