code combineren

Status
Niet open voor verdere reacties.

Doohan

Gebruiker
Lid geworden
20 mrt 2012
Berichten
374
Beste Helper,

Ik probeer onderstaande code kleiner te schrijven iemand een suggestie?UUHH ik bedoel dus niet de letterhoogte:)
Code:
Private Sub cmdVermogendruk_Click()
            'Geluidsdruk Bepaling per afstand (vrije veld condities)
            If Me.TextBox15.Value = "" Or Me.TextBox16.Value = "" Then
            MsgBox "Vergeet niet Geluidsvermogensniveau of afstand in te vullen": Exit Sub
            End If
            
            If Me.TextBox15.Value = 0 Or Me.TextBox16.Value = 0 Then
            MsgBox "Geluidsvermogensniveau of afstand mag geen 0 zijn": Exit Sub
            End If
            
            Me.Label259.Caption = Round(Me.TextBox15.Value - 10 * Log10(4 * (WorksheetFunction.Pi) * TextBox16 ^ 2), 0)
End Sub

Bij Voorbaat dank
 
Zoiets?
Code:
Private Sub cmdVermogendruk_Click()
    [COLOR="#008000"]'Geluidsdruk Bepaling per afstand (vrije veld condities)[/COLOR]
    If Me.TextBox15.Value = "" Or Me.TextBox16.Value = "" Then MsgBox "Vergeet niet Geluidsvermogensniveau of afstand in te vullen": Exit Sub
    If Me.TextBox15.Value = 0 Or Me.TextBox16.Value = 0 Then MsgBox "Geluidsvermogensniveau of afstand mag geen 0 zijn": Exit Sub
    Me.Label259.Caption = Round(Me.TextBox15.Value - 10 * Log10(4 * (WorksheetFunction.Pi) * TextBox16 ^ 2), 0)
End Sub

Maar ik zou me om die paar regeltjes totaal niet druk maken.

Zelf zou ik het vanwege leesbaarheid zo doen:
Code:
Private Sub cmdVermogendruk_Click()
    [COLOR="#008000"]'Geluidsdruk Bepaling per afstand (vrije veld condities)[/COLOR]
    If Me.TextBox15.Value = "" Or Me.TextBox16.Value = "" Then
        MsgBox "Vergeet niet Geluidsvermogensniveau of afstand in te vullen"
        Exit Sub
    End If
    
    If Me.TextBox15.Value = 0 Or Me.TextBox16.Value = 0 Then
        MsgBox "Geluidsvermogensniveau of afstand mag geen 0 zijn"
        Exit Sub
    End If
    
    Me.Label259.Caption = Round(Me.TextBox15.Value - 10 * Log10(4 * (WorksheetFunction.Pi) * TextBox16 ^ 2), 0)
End Sub
 
Laatst bewerkt:
ok bedankt het ging om een kleine lering mijne zijde.
Ik laat het zoals het is
Dank Edmoor
 
Welke waarden mogen ingevuld worden ?

Waarom gebruik je een tekstvak voor een getal ?
 
Er 1 berichtje van maken?

Code:
 If Val(TextBox15) = 0 Or Val(TextBox16) = 0 Then
    MsgBox "Geluidsvermogensniveau of afstand mag geen 0 of leeg zijn"
    Exit Sub
  End If
 
@SNB Ik snap niet wat je bedoelt zijn er ook andere manieren om een zelf in te voeren getal in te vullen op een userform die je wilt gebruiken.
 
Kijk eens naar spinbutton, combobox of listbox
 
Ik probeer alle voor mij bekende mogelijkheden,dus ik heb ook comboboxen en listboxen in dit vba project. In dit geval leek mij een tekstbox de beste optie. Maar bedankt voor het uitlichten van de meerdere mogelijkheden.
 
Een tekst is toch geen getal ?
 
Ik snap wat je bedoelt. Maar ik gebruik dit tekstvak om zelf het toetsenbord te gebruiken om een getal in te voeren.
Ik gebruik het enkel om binnen vba op mijn userform een berekening te maken. Er bestaan toch geen getalvakken. En op het moment dat ik met textbox.value iets uitreken dan is die waarde toch een getal geworden. Of begrijp ik nog steeds niet wat je bedoelt?
 
De vraag gaat toch over het combineren van code? Zo ja zie #5 zo nee waar gaat de vraag dan over?
 
Je zou de code nog iets verder kunnen inkorten:
Code:
Private Sub cmdVermogendruk_Click()
    'Geluidsdruk Bepaling per afstand (vrije veld condities)
    If TextBox15.Value = "" Or TextBox16.Value = "" Then
        MsgBox "Vergeet niet Geluidsvermogensniveau of afstand in te vullen"
    ElseIf TextBox15.Value = 0 Or TextBox16.Value = 0 Then
        MsgBox "Geluidsvermogensniveau of afstand mag geen 0 zijn"
    Else
        Label259.Caption = Round(TextBox15.Value - 10 * Log10(4 * (WorksheetFunction.Pi) * TextBox16 ^ 2), 0)
    End If
End Sub

Eventueel zou je, zoals V&A ook al aangeeft, de berichten kunnen combineren tot 1 msgbox.
Ik zou trouwens voor de namen van de controls andere meer beschrijvende benamingen kiezen i.p.v. TextBox15, TextBox16 e.d. Daar wordt de code duidelijker van.
 
Laatst bewerkt:
V&A

Als je een control kiest waarmee de gebruiker geen 'fouten' kan maken, is de vraag over de combinatie van code voor 'fout'meldingen overbodig.
 
@snb,
[off topic] PM gezien en weet ik. Was een speldenprikje om te zien of de TS al iets geleerd heeft.

[on topic] Smaken verschillen en ik ken het formulier niet. Soms werkt het prettiger/sneller om gegevens direct in te voeren via het toetsenbord wat met een spinbutton wat lastig gaat. Of een achteraf controle overbodig is, is afhankelijk van de opzet van het onbekende formulier. De vraag staat als opgelost dus de TS zal tevreden zijn met de gegeven oplossingen.
 
@V&A

Ter info: de up/down toetsen werken ook voor spinbuttons, combo- en listboxen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan