VBA - Excel - operace s dvěma čísly

Kategorie: Programování » Visual Basic » VBA - Excel - operace s dvěma čísly

Datum vydání: 06. 02. 2012, aktualizováno 29. 07. 2012

Excel 2010

Excel 2010 - operace s dvěma čísly

Úkolem je naprogramovat makro ve Visual Basic, které po stisknutí daného tlačítka vykoná operaci součet, rozdíl, násobení a dělení nad dvěma čísly, které usou zadány v textboxu a výsledek vypsat do buňky v Excelu.

Při umísťování ovládacích prvků TextBox a tlačítek jsem volila ovládací prvky ActiveX, a to jak pro prvky TextBox (textové pole), tak CommandButton (příkazové tlačítko).

Součástí programu je ošetření uživatelského vstupu pomocí funkce. Funkce zároveň převede hodnoty na číslo a předá je zpět formou reference. Ošetření vstupních hodnot by šlo udělat i jiným způsobem.

 

Zdrojový kód Visual Basic for Applications

' Funkce zkontroluje vstupni hodnoty v TextBoxA a TextBoxB - zda jde o cisla.
' Prevede vstupni hodnoty na typ double a vrati je jako referencni promenne.
Function KontrolaVstupu(ByRef A, B As Double) As Boolean
    A = 0
    B = 0
    If Not IsNumeric(TextBoxA.Text) Then
        MsgBox "Musíte zadat správně číslo A!", vbExclamation
        KontrolaVstupu = False
    ElseIf Not IsNumeric(TextBoxB.Text) Then
        MsgBox "Musíte zadat správně číslo B!", vbExclamation
        KontrolaVstupu = False
    Else ' vstup je spravny
        A = CDbl(TextBoxA.Text)
        B = CDbl(TextBoxB.Text)
        KontrolaVstupu = True
    End If
End Function
Private Sub CommandButtonDeleni_Click()
    Dim A, B As Double
    If KontrolaVstupu(A, B) Then
        If B = 0 Then
            MsgBox " Nulou nelze dělit! Musíte zadat správně číslo B!", vbExclamation
            Range("C18").Value = ""
        Else
            Range("C18").Value = A / B
        End If
    Else
        Range("C18").Value = ""
    End If
End Sub
Private Sub CommandButtonNasobeni_Click()
    Dim A, B As Double
    If KontrolaVstupu(A, B) Then
        Range("C18").Value = A * B
    Else
        Range("C18").Value = ""
    End If
End Sub
Private Sub CommandButtonRozdil_Click()
    Dim A, B As Double
    If KontrolaVstupu(A, B) Then
        Range("C18").Value = A - B
    Else
        Range("C18").Value = ""
    End If
End Sub
Private Sub CommandButtonSoucet_Click()
    Dim A, B As Double
    If KontrolaVstupu(A, B) Then
        Range("C18").Value = A + B
    Else
        Range("C18").Value = ""
    End If
End Sub

Zdrojový soubor

xlsm operace-s-dvema-cisly.xlsm

txt operace-s-dvema-cisly.txt