VBA – Excel – převod na litry

Aktualizováno: 20. 11. 2019, datum vydání: 9. 3. 2012

Převod na litry

Jedná se zde o jednoduchou úlohu z programování pro studenty. Úkolem je převést množství tekutiny zadané v ml, l a hl na l.

Naprogramovaná událost na tlačítko využívá funkce Mid() pro separaci množství a jednotek. Dále je zde využita funkce InStr() pro zjištění pozice mezery, jako oddělovače.

Pro rozlišení jednotek je zde použita konstrukce Select Case.

Zdrojový kód ve Visual Basic for Application

Převod na litry u jedné konkrétní buňky

Private Sub CommandButtonPrevodLitryJP_Click()
    Text = Range("A1").Text
    PoziceMezery = InStr(Text, " ")
    Mnozstvi = Mid(Text, 1, PoziceMezery - 1)
    Jednotky = Mid(Text, PoziceMezery + 1, Len(Text))
    
    Select Case Jednotky
        Case "ml"
            MnozstviVLitrech = Mnozstvi / 1000
        Case "l"
            MnozstviVLitrech = Mnozstvi
        Case "hl"
            MnozstviVLitrech = Mnozstvi * 100
    End Select
    
    Range("B1").Value = MnozstviVLitrech & " l"
End Sub

Převod vícero buněk

Private Sub CommandButtonPrevodLitryJT_Click()
    Dim PoziceMezery As Integer
    Dim Text, Jednotky As String
    Dim Mnozstvi, MnozstviVLitrech As Double
    
    For Each Bunka In Range("A1:A6")
        Text = Bunka.Text
        PoziceMezery = InStr(Text, " ")
        Mnozstvi = Mid(Text, 1, PoziceMezery - 1)
        Jednotky = Mid(Text, PoziceMezery + 1, Len(Text))
        
        Select Case Jednotky
            Case "ml"
                MnozstviVLitrech = Mnozstvi / 1000
            Case "l"
                MnozstviVLitrech = Mnozstvi
            Case "hl"
                MnozstviVLitrech = Mnozstvi * 100
        End Select
        
        Bunka.Offset(0, 1).Value = MnozstviVLitrech & " l"
    Next Bunka
End Sub

Převod vícero buněk včetně správného formátování jednotek

Private Sub CommandButtonPrevodLitryJZ_Click()
    Dim PoziceMezery As Integer
    Dim Text, Jednotky As String
    Dim Mnozstvi, MnozstviVLitrech As Double
    
    For Each Bunka In Range("A1:A6")
        Text = Bunka.Text
        PoziceMezery = InStr(Text, " ")
        Mnozstvi = Mid(Text, 1, PoziceMezery - 1)
        Jednotky = Mid(Text, PoziceMezery + 1, Len(Text))
        
        Select Case Jednotky
            Case "ml"
                MnozstviVLitrech = Mnozstvi / 1000
            Case "l"
                MnozstviVLitrech = Mnozstvi
            Case "hl"
                MnozstviVLitrech = Mnozstvi * 100
        End Select
        
        Bunka.Offset(0, 1).NumberFormat = "#,##0.00 l"
        Bunka.Offset(0, 1).Value = MnozstviVLitrech
        
    Next Bunka
End Sub

Zdrojový soubor

xlsm prevod-na-litry.xlsm

Další články