Arvutiõpe, 14. kord

Jätkame siis sealt, kus eelmise korra kodune ülesanne pooleli jäi, ehk siis kolme arvu ja nende summa kuvamine:

Sub Andmeanalyys()

Set leht = ThisWorkbook.Worksheets(“Algandmed”)
arv1 = leht.Range(“A1”)
arv2 = leht.Range(“A2”)
arv3 = leht.Range(“A3”)
MsgBox arv1 & vbNewLine & arv2 & vbNewLine & arv3 & vbNewLine & arv1 + arv2 + arv3

End Sub

Järgmiseks analüüsime, kas lahtrites A1-A3 olevad andmed ikka oleksid kõik numbrid, selleks kasutamine IsNumeric funktsiooni ja if-else-lauset, kus kontrollitakse, kas nt lahtris A1 on number:

    1. kui jah, siis omistatakse selle väärtus muutujale arv1
    2. kui ei, siis:
      1. kuvatakse teade “Palun sisesta lahtrisse A1 number!”
      2. väljutakse programmist

If IsNumeric(leht.Range(“A1”)) Then
      arv1 = leht.Range(“A1”)
Else
     MsgBox “Palun sisesta lahtrisse A1 number!”
     Exit Sub
End If

Kogu senine kood näeb siis välja selline:

Sub Andmeanalyys()

Set leht = ThisWorkbook.Worksheets(“Algandmed”)

If IsNumeric(leht.Range(“A1”)) Then
      arv1 = leht.Range(“A1”)
Else
     MsgBox “Palun sisesta lahtrisse A1 number!”
     Exit Sub
End If

arv2 = leht.Range(“A2”)
arv3 = leht.Range(“A3”)

MsgBox arv1 & vbNewLine & arv2 & vbNewLine & arv3 & vbNewLine & arv1 + arv2 + arv3

End Sub

Aga, nüüd võiks saadud summa kuvada ka meie töölehele Algandmed. Selleks on kaks võimalust, mida võib siis sõltuvalt olukorrast kasutada.

Esmalt on võimalus, et arvutuse teostab makro ja tulemus kuvatakse mingisse lahtrisse, nt lahtrisse A4:

summa = arv1 + arv2 + arv3
leht.Range(“A4”) = summa

Teiseks võimaluseks on kasutada konkreetses lahtris valemit:

leht.Range(“A4″).Formula=”=A1+A2+A3”

Alternatiivselt võib kasutada ka Exceli summeerimise funktsiooni, milles kooloniga eraldatuna tuuakse ära rida/veergude vahemik ja komaga/semikooloniga eristatakse erinevad numbrikatked):

leht.Range(“A4″).Formula=”=SUM(A1:A3)”

Kogu kood näeks siis välja selline:

Sub Andmeanalyys()

Set leht = ThisWorkbook.Worksheets(“Algandmed”)

If IsNumeric(leht.Range(“A1”)) Then
     arv1 = leht.Range(“A1”)
Else
    MsgBox “Palun sisesta lahtrisse A1 number!”
    Exit Sub
End If
arv2 = leht.Range(“A2”)
arv3 = leht.Range(“A3”)
MsgBox arv1 & vbNewLine & arv2 & vbNewLine & arv3 & vbNewLine & arv1 + arv2 + arv3

‘summa = arv1 + arv2 + arv3
‘leht.Range(“A4”) = summa
‘leht.Range(“A4”).Formula = “=A1+A2+A3”
leht.Range(“A4”).Formula = “=SUM(A1:A3)”

End Sub

Nt minu ingliskeelse Exceli puhul, kui sooviksin summeerida ridade 1-3 ja 5-7 numbrid, näeks VBA summa valem välja selline (NB! erinevad numbrikatked eraldatud komaga A1:A3 , A5:A7):

leht.Range(“A9”).Formula = “=SUM(A1:A3,A5:A7)”

Aga lehel Algandmed olevas lahtris A9 kuvatakse see nii: =SUM(A1:A3;A5:A7) (eraldatud semikooloniga – A1:A3 ; A5:A7))

Seekordseks koduseks ülesandeks on:

  1. lisada kontroll, et kas lahtritesse A2 ja A3 oleksid sisestatud numbrid
  2. kuvada numbrite A2 ja A3 summa lahtrisse A5 (kasutades liitmist)
  3. kuvada numbrite A1 ja A3 summa lahtrisse A6 (sisestades lahtrisse valemi)