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:
-
- kui jah, siis omistatakse selle väärtus muutujale arv1
- kui ei, siis:
- kuvatakse teade “Palun sisesta lahtrisse A1 number!”
- 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:
- lisada kontroll, et kas lahtritesse A2 ja A3 oleksid sisestatud numbrid
- kuvada numbrite A2 ja A3 summa lahtrisse A5 (kasutades liitmist)
- kuvada numbrite A1 ja A3 summa lahtrisse A6 (sisestades lahtrisse valemi)