Bilangan ganjil atau genap - LoopingLanjutan tulisan sebelumnya, sekarang kita lanjutkan ke lebih berbentuk GUI, dan menggunakan pengulangan (looping)
Tampilan awal:

Di sini kita bisa memasukkan angka mulai dari batas bawah sampai batas atas yang kita kehendaki, sementara ini hanya bilangan bulat positif saja. Sebagai nilai default kita pilih angka 1 - 50, selanjutnya silakan diubah.

Tampilan di atas menunjukkan kita tidak memilih pilihan ganjil atau genap dan juga pilihan habis dibagi angka tertentu, sehingga sama juga kita hanya ingin menampilkan bilangan dari angka 1 sampai 50.

Tampilan di atas contoh kita memilih opsi tampilan bilangan genap saja.
Anda lihat di sebelah kanan form juga ada informasi jumlah bilangan yang ditemukan, total jumlah bilangan, dan rata2 dari deret yang ditemukan.
Gambar berikutnya, lebih ditingkatkan lagi penyaringannya:

Yaitu bilangan genap saja sekaligus yang habis di bagi 5 (dalam contoh), silakan Anda ganti dengan angka bulat positif berapapun.
Contoh terakhir:

Dari deret angka, disaring bilangan yang habis dibagi oleh bilangan yang Anda masukkan, contoh 5, tidak disyaratkan harus ganjil atau genap.
Source Code lengkap:Option Explicit
'----------------------------------
' Genap Ganjil 2
' Developed for Forum Informatika
' http://if.web.id
' Visit us for more tutorial
'-----------------------------------
' bb : batas bawah
' ba : batas atas
Dim bb As Integer
Dim ba As Integer
' hb : variabel habis dibagi
Dim hb As Integer
' flag pemilihan ganjil atau genap dan habis dibagi
' tidak dipilih:0, ganjil:1, genap:2, ganjil/genap + habis dibagi:3
' habis dibagi saja:4
Dim gg As Integer
Private Sub Check1_Click()
If Check1.Value = 1 Then
Frame1.Enabled = True
Option1.Enabled = True
Option2.Enabled = True
Else
Frame1.Enabled = False
Option1.Enabled = False
Option2.Enabled = False
gg = 0
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
Text3.Enabled = True
Else
Text3.Enabled = False
End If
End Sub
Private Sub Command1_Click()
bb = Val(Text1)
ba = Val(Text2)
hb = Val(Text3)
If bb >= ba Then
MsgBox "Batas atas harus lebih besar ketimbang batas bawah", vbCritical, "Kesalahan!"
Text1.SetFocus
Exit Sub
End If
If Check2.Value = 1 Then
If hb <= 0 Then
MsgBox "Pembagi harus lebih dari 0 (nol)", vbCritical, "Kesalahan!"
If Text3.Enabled = True Then Text3.SetFocus
Exit Sub
End If
If Check1.Value = 1 Then
If Option1.Value = True Then gg = 1 Else gg = 2
Call KELUARAN(bb, ba, hb, gg, True)
Else
gg = 4
Call KELUARAN(bb, ba, hb, 0)
End If
Else
hb = 0
If Check1.Value = 1 Then
If Option1.Value = True Then
gg = 1
Call KELUARAN(bb, ba, 2, 1)
Else
gg = 2
Call KELUARAN(bb, ba, 2, 0)
End If
Else
gg = 0
Call KELUARAN(bb, ba, 1, 0)
End If
End If
End Sub
Private Sub Option1_Click()
gg = 1
End Sub
Private Sub Option2_Click()
gg = 2
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If IsNumeric(Chr(KeyAscii)) <> True Then KeyAscii = 0
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If IsNumeric(Chr(KeyAscii)) <> True Then KeyAscii = 0
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
If IsNumeric(Chr(KeyAscii)) <> True Then KeyAscii = 0
End Sub
Private Function Habis_DiBagi(a, p, h As Integer) As Boolean
If a Mod p = h Then Habis_DiBagi = True
End Function
Private Sub KELUARAN(a, b, p, h As Integer, Optional semua As Boolean)
' Optional semua : untuk menangani kasus pemilihan semua opsi
Dim i As Integer
Dim jml As Integer
Dim total As Long
Dim rata As Double
Text4 = vbNullChar
jml = 0
If Not semua Then
For i = a To b
If Habis_DiBagi(i, p, h) Then
Text4 = Text4 & i & " "
jml = jml + 1
total = total + i
End If
Next
Else ' kalau semua dipilih
Dim z As Integer
z = p
p = 2
If h = 2 Then h = 0
For i = a To b
If Habis_DiBagi(i, p, h) Then
If Habis_DiBagi(i, z, 0) Then
Text4 = Text4 & i & " "
jml = jml + 1
total = total + i
End If
End If
Next
End If
rata = Round(total / jml, 2)
Label6.Caption = "Ada " & jml & " bilangan."
Label7.Caption = "Total : " & total
Label8.Caption = "Rata2 : " & rata
End Sub
Terlampir di attachment.