tekstvak leeg melden met msgbox

Status
Niet open voor verdere reacties.

Doohan

Gebruiker
Lid geworden
20 mrt 2012
Berichten
374
Beste helper,

In de bijlage een bestandje met formulier. Op het formulier zitten meerdere tekstvakken
De combobox haalt gegevens en vult de 1ste tekstvak regel dit werkt perfect. Als je daarna op de command button druk word er iets uitgerekent. Werkt ook perfect. Ik zou graag een melding via msgbox krijgen als 1 van de tekstvakken leeg is en ik toch op de command button druk. dat werkt nl. niet.

alvast dank
 

Bijlagen

Je kunt de knop beter uitschakelen tot alle verplichte velden zijn ingevuld, dan kan het probleem nooit voorkomen.
 
Eens met OctaFish.
Wil je dat niet dan kan je dit loopje gebruiken bovenin de code achter de knop:
Code:
For i = 1 To 80
    If Controls("txtHz" & i).Value = "" Or Controls("txtHz" & i).Value = "0" Then
        Controls("txtHz" & i).SetFocus
        MsgBox "Box " & i & " is niet gevuld.", vbCritical
        Exit Sub
    End If
Next i
 
is een oplossing maar ik wil kunnen blijven spelen en klikken om resultaten te vergelijken dus als ik in de tekstvakken bezig ben is het wel handig om een melding te krijgen als 1 tekstvak per ongeluk leeg is
 
Precies wat ik nodig had Edmoor .
thx

Beste wensen aan alle mensen op het forum
 
tekstvak leeg melden met msgbox (herhaling)

Beste Edmoor het werkte.

Maar na aanpassing en aanvulling niet meer. Als ik een txtvak nu leeg laat krijg ik foutcode 13. formulier werkt bijna perfect.

Ik heb maar een nieuwe vraag gestart want de oude was al opgelost verklaard.

m.vr.gr. Martin
 

Bijlagen

Dat staat helemaal los van die controle.
Je wilt de lblLWTot objecten vullen en in die berekening gebruik je Text waarden (TxtHZ) waarmee je gaat rekenen.
Dat kan niet en krijg je dan die fout 13 op.
 
Laatst bewerkt:
bedoel je nu dat ik
Code:
        For lw1 = 1 To 8
            If Controls("txtHz" & lw1).Value = "" Then
                Controls("txtHz" & lw1).SetFocus
                MsgBox "Tekstvak moet Getal of 0 bevatten!!"
            Else
                Me.lblLWTot1.Caption = CDbl(Round(10 * Log10((10 ^ (txtHz1 / 10)) + (10 ^ (txtHz2 / 10)) + (10 ^ (txtHz3 / 10)) + (10 ^ (txtHz4 / 10)) + (10 ^ (txtHz5 / 10)) + (10 ^ (txtHz6 / 10)) + (10 ^ (txtHz7 / 10)) + (10 ^ (txtHz8 / 10))), 0))
            End If
        Next
moet veranderen in
Code:
        For lw1 = 1 To 8
            If Controls("txtHz" & lw1).Value = "" Then
                Controls("txtHz" & lw1).SetFocus
                MsgBox "Tekstvak moet Getal of 0 bevatten!!"
            Else
                Me.lblLWTot1.Caption = CDbl(Round(10 * Log10((10 ^ (txtHz1.Value / 10)) + (10 ^ (txtHz2.Value / 10)) + (10 ^ (txtHz3.Value / 10)) + (10 ^ (txtHz4.Value / 10)) + (10 ^ (txtHz5.Value / 10)) + (10 ^ (txtHz6.Value / 10)) + (10 ^ (txtHz7.Value / 10)) + (10 ^ (txtHz8.Value / 10))), 0))
            End If
        Next
 
De tekst moet inderdaad worden geconverteerd naar het juiste datatype.
Maar dan wel per txtHz waarde:
CDbl(txtHz1.Value)
 
Ik begrijp even niet waar ik dat moet doen. Moet ik alle txtHz? vervangen voor cdbl(txtHZ?.value) in alle formules?
 
Ja, wel op de manier zoals je ze gebruikt, daar waar je lblLWtot? vult.
De foutmelding is er duidelijk over dat het gaat om een incorrect datatype.
 
Laatst bewerkt:
Beste Edmoor

ik ga dit lijntje sluiten en laat de foutcode maar zitten. ik zie steeds meer foutmeldingen. De gebruikers moeten gewoon maar de tekstvakken controleren.
Bedankt.
 
Ik begrijp ook niet waarom je allemaal doet wat je er in gebakken hebt.
Voor die controle is het stukje in #3 voldoende.
 
Ik doe dit zodat ik een geluidsberekening kan maken. met meerdere bronnen. De combox haalt geluid gegevens van een motor.
als ik toevallig een situatie heb met 2 motoren of meer dan dan ik via een button de waarde snel even door pushen. Als het andere bronnen zijn dan kan ik per octaafband het geluidsniveau apart opgeven. Het enige wat er nog aan ontbreekt is het geval een leeg tekstvak.

De totaal code is misschien niet perfect maar het is weer een geweldige tool met een klein bugje geworden.

Op naar de volgende tool.
bedankt
 
Zo dan

Code:
For i = 1 To 8
              If Me("txthz" & i) = "" Then Me("txthz" & i) = 0
                c00 = c00 + 10 ^ (Me("txtHz" & i) / 10)
              Next i
             Me.lblLWTot1.Caption = CDbl(Round(10 * Log10(c00)))
 
Geweldig HSV,

Het resultaat is nog beter als verwacht.
Bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan