Anda di halaman 1dari 35

1 Pintar User Defined Function Copy@Right April 2020

PENGANTAR
User Defined Function

Buku ini kami susun dari berbagai Sumber sebagai Panduan


Singkat bagi pemula untuk dapat mengenal User Defined
Function ( UDF) dengan Memaksimalkan Visual basic yang
dapat diapresiasikan di buku kerja excel

Sudah Tentu buku ini sangat jauh dari yang diharapkan.


Namun kami berharap semoga sedikit dapat membantu
Dalam Belajar Mendalami Microsof khususnya Excel VBA
Kritik dan Saran Membangun selalu kami Harapkan
Semoga buku dapat bermanfaat

Penyusun
Hormat Kami

I PUTU ASANA
Kontak Kami :

https://wa.me/6282396256527

asanaputu@gmail.com

https://excelsuport.blogspot.com/

2 Pintar User Defined Function Copy@Right April 2020


UDF
(User Defined Function)
Anda dapat membuat fungsi yang belum ada pada fungsi standar
bawaan di Excel, melalui Macro berupa User Defined Function
(UDF).
Pertama Anda harus membuka Visual Basic Editor (VBE) dari
Ribbon.
Klik Tab Developer pada Menu Ribbon untuk menampilkan Tab
Developer di Ms. Excel.
Pada jendela Visual Basic/VBA.
Klik Menu Module

Prosedur UDF diawali dengan Function Dan diakhiri denga End


Function

Contoh Prosedur

Functiong ()
………………..
End Function

Function Namafile()
Namafile = ThisWorkbook.Name
End Function

3 Pintar User Defined Function Copy@Right April 2020


Functiong NamaDifinisi([[variable name] As [Type])
………………..
End Function

Function JumlahBaris(Seleksi As Range)


Dim Cell As Range
For Each Cell In Seleksi
Result = Seleksi. Rows.Count
Next Cell
JumlahBaris = Result
End Function

Functiong NamaDifinisi( [variable name] As [Type],


[variable name] As [Type])
Dim [variable name] As [Type]
Dim [variable name] As [Type]
End Function
Function Perentase(Jual As Range, Beli As Range)
Dim xx As Long
Dim yy As Long
Dim zz As Long
Dim Keuntuga As Double
xx = Jual.Value
yy = Beli.Value
zz = xx - yy
Perentase = zz / yy
End Function

4 Pintar User Defined Function Copy@Right April 2020


Functiong NamaDifinisi( [variable name] As [Type],
[variable name] As [Type], [variable name] As [Type])
Dim [variable name] As [Type]
Dim [variable name] As [Type]
Dim [variable name] As [Type]
End Function

Pada Module in kita akan menambahkan module pada file excel


Anda sebagai tempat penulisan coding rumus atau fungsi.
Terlihat jendela module.
Masukkan kode pada module tersebut
Save as file excel dengan tipe Excel Macro-enabled Workbook
sehingga nanti fungsi yang Anda buat ini dapat digunakan lagi
seperti halnya dengan fungsi excel lainnya.

Cara membuat udf yaitu kita harus mendifinisi kan sebuah prosedur
Sesuai type datanya

Mengenal data type Variable in VBA

1.Jenis Data Non-Numerik


Tipe data ini hanya dapat menampung data non-numerik. Ini adalah
tipe data non-numerik yang umum yaitu String, Boolean, Variant,
Object.

String:
Ini dapat menampung dua jenis nilai string di dalamnya yaitu String
dengan panjang tetap dan string dengan panjang variabel.

Boolean:
Booleans dalam VBA adalah nilai-nilai logis mis. TRUE atau FALSE.

5 Pintar User Defined Function Copy@Right April 2020


Varian:
Dapat menyimpan data numerik dan non-numerik.

Objek:
Variabel objek adalah produk Microsoft.
Misalnya dalam objek excel adalah "Lembar Kerja, Buku Kerja,
Rentang". Objek Microsoft adalah "MS Word, MS PowerPoint, dan MS
Outlook".

2.Jenis Data Numerik


Tipe data ini hanya dapat menyimpan data numerik.
Di bawah ini adalah tipe data numerik Yaitu
Byte, Integer, Long, Single, Double, Date, Currency, Decimal.

Byte:
Ini adalah variabel kapasitas kecil di mana variabel yang
dideklarasikan dapat menyimpan nilai dari 0 hingga 255.

Integer:
Ini adalah versi perbaikan dari tipe data Byte. Ini dapat menyimpan
nilai dari -32768 hingga 32768. Jika ada nilai desimal yang diberikan,
maka akan dikonversi ke nilai integer terdekat. Misalnya, 5,55 akan
dikonversi menjadi 6 dan 5,49 akan dikonversi menjadi 5.

Long
Di mana tipe data Integer membatasi nilainya pada 32768 LONG
dapat menampung angka yang sangat panjang dari -2,147.483.648
hingga 2.147.483.648.

Single
Jenis data tunggal dapat menampung dua tempat desimal -
3.402823E + 38 hingga -1.401298E-45 untuk nilai negatif dan
1.401298E-45 hingga 3.402823E + 38 untuk nilai positif.

6 Pintar User Defined Function Copy@Right April 2020


Double
Jenis data ganda dapat menampung lebih dari dua tempat desimal
yaitu hingga 14 tempat desimal. -1.79769313486232e + 308 hingga -
4.94065645841247E-324 untuk nilai negatif dan
4.94065645841247E-324 hingga 1.79769313486232e + 308 untuk
nilai positif.

Date
Tipe data ini hanya dapat menyimpan nilai DATE.

Currency
Tipe data ini dapat menyimpan nilai dari -922.337.203.685.477.5808
hingga 922.337.203.685.447.5807.

Decimal
Jenis data desimal dapat menampung hingga 28 tempat desimal. Ini
dapat berlaku dari +/- 79.228.162.514.264.337.593.543.950.335 jika
tidak ada desimal yang digunakan +/-
7.9228162514264337593543950335.

Disini kita akan akan mendifinisikan dgn Dim


Sebelumnya mari kita simak apa iti Dim

PENGERTIAN DIM
DIM adalah bagian dari versi awal bahasa komputer BASIC
(Beginner's All Purpose Symbolic Instruction Code) yang
dikembangkan oleh dua matematikawan, John George Kemeny dan
Tom Kurtzasat Dartmouth College, pada tahun 1964.

FUNGSI DIM

7 Pintar User Defined Function Copy@Right April 2020


FUNGSI DIM adalah Untuk mendeklarasikan banyak jenis variabel
dalam BASIC atau VBA ,Termasuk seluruh bilangan (byte, integer
atau panjang), bilangan floating-point (tunggal atau ganda), string
(alfanumerik), mata uang, tanggal, Boolean dan objek.

Asal Mula DIM

DIM awalnya berdiri untuk "Dimensi" mengacu pada ukuran array


(matriks variabel) atau jenis variabel yang digunakan. Lebih umum,
programmer mengacu pada DIM sebagai "menyatakan" jenis
variabel.
DIM sangat pentingnya dalam versi Visual Basic, termasuk VBA di
Excel
jika jenis variabel tidak dideklarasikan, default ke tipe "varian". maka
ketika kode dijalankan, jika program harus menentukan jenis
variabelnya, bila tdk ini akan memperlambat kerja aplikasi.

Syarat penting dalam penggunaan DIM adalah

1.Menempatkan kata-kata "Option Explicit" (tanpa tanda kutip) pada


awal modul kode di VBA di Excel akan menjebak setiap upaya
penggunaan variabel yang tidak dideklarasikan. Ini akan mencegah
masalah nanti .

Menggunakan statement Dim sesuai type datanya


1.Type data text
Dim passpor As String
Dim Nama As String

2.Type data angka


Dim firstnum As Integer
Dim secondnum As Integer
Dim total As Integer

3.Type data tingkat


8 Pintar User Defined Function Copy@Right April 2020
Dim Nomor As Long,
Dim Baris As Long

4.Type data tanggal


Dim BirthDay As Date
Dim Lahir As Date

5.Type data Mata uang


Dim Income As Currency
Dim gaji As Currency

'1. VARIABEL DASAR


'Mendeklarasikan variabel dasar
Dim name As String
Dim count As Long
Dim amount As Currency
Dim eventdate As Date
Dim userid As String * 8

' 2. VARIANT
Dim var As Variant
Dim var

' 3. OBJECT
'Mendeklarasikan suatu objek
Dim sh As Worksheet
Dim wk As Workbook
Dim rg As Range
Dim coll1 As New Collection
Dim o1 As New Class1

Dim coll2 As Collection


Dim o2 As Class1

9 Pintar User Defined Function Copy@Right April 2020


Set coll2 = New Collection
Set o2 = New Class1

Dim dict As Object


Set dict = CreateObject("Scripting.Dictionary")

' 4. ARRAY

Dim arrScores(1 To 5) As Long


Dim arrCountries(0 To 9) As String

Dim arrMarks() As Long


Dim arrNames() As String

ReDim arrMarks(1 To 10) As Long


ReDim arrNames(1 To 10) As String

Berikut table type data dan penggunaannya

Format Example
Dim [variable name] As [Type] Dim count As Long
Dim amount As Currency
Dim name As String
Dim visible As Boolean
Dim [variable Dim s As String * 4
name] As String * [size] Dim t As String * 10
Dim [variable name] As Variant Dim var As Variant
Dim [variable name] Dim var
Dim [variable Dim coll As New Collection

10 Pintar User Defined Function Copy@Right April 2020


Format Example
name] As New [object type] Dim coll As New Class1
Dim [variable name] As [object Dim coll As Collection
type] Set coll = New Collection
Set [variable name]
= New [object type] Dim coll As Class1
Set coll = New Class1
Dim [variable Dim arr(1 To 6) As Long
name]([first] To [last]
) As [Type]
Dim [variable Dim arr() As Long
name]() As [Type] ReDim arr(1 To 6)
ReDim [variable
name]([first] To [last])
Dim [variable Dim dict As New Dictionary
name] As New [item]
Dim [variable name] As [item] Dim dict As Dictionary
Set [variable name] Set dict = New Dictonary
= New [item]
Dim [variable name] As Object Dim dict As Object
Set [variable name] = Set dict =
CreateObject("[library]") CreateObject("Scripting.Dictionary")

11 Pintar User Defined Function Copy@Right April 2020


Contoh UDF
(User Defined Function)
Function 1
Function hitung(a, b, c)
hitung = 100 * a * b * c
End Function

Function 2

Function jumlah(a, b, c)
jumlah = 100 + a + b + c
End Function

UDF RUMUS HASIL


100 * a * b * c =hitung(2;2;2) 800

100 + a + b + c =Jumlah(2;2;2) 106


Function 3

Function Perentase(Jual As Range, Beli As Range)


Dim xx As Long
Dim yy As Long
Dim zz As Long
Dim Keuntuga As Double
xx = Jual.Value
yy = Beli.Value
zz = xx - yy
Perentase = zz / yy
End Function
12 Pintar User Defined Function Copy@Right April 2020
A B C D
1 Jual Beli Hasil Rumus
2 11.000 10.000 10% =Perentase(A2;B2)
3 12.000 10.000 20% =Perentase(A3;B3)
4 13.000 10.000 30% =Perentase(A4;B4)
5 14.000 10.000 40% =Perentase(A5;B5)
6

Function 4

Function Keuntugan(Jual as Range,Beli as Range)


Dim xx As Long
Dim yy As Long
Dim Keuntuga As Double
xx = Jual.Value
yy = beli.Value
Keuntugan =xx-yy
End Function

A B C D
1 Jual Beli Hasil Rumus
2 10.000 9.000 1.000 =Keuntugan(A2;B2)
3 10.000 8.000 2.000 =Keuntugan(A3;B3)
4 10.000 7.000 3.000 =Keuntugan(A4;B4)
5 10.000 6.000 4.000 =Keuntugan(A5;B5)
6

13 Pintar User Defined Function Copy@Right April 2020


Function 5

Function Keuntugan()
Keuntugan = Range("A2").value -Range("B2").value
End Function

A B C D
1 Jual Beli Hasil Rumus
2 10.000 8.000 2.000 =Keuntugan()
3

Function 6

Function NamaSheet()
NamaSheet = Range("A1").Parent.Name
End Function

Function 7

Function Namafile()
Namafile = ThisWorkbook.Name
End Function

=NamaFile() =NamaSheet()
Book2 Sheet1

14 Pintar User Defined Function Copy@Right April 2020


Function 8
Function tambah()
tambah = Range("A3") + 100 * 2
End Function

Nilai A3 UDF RUMUS HASIL


1000 A3+100 x 2 =tambah() 1200

Function 9

Function bonus()
bonus = Range("A3") * 0.05
End Function

Nilai A3 UDF RUMUS HASIL


50.000 A3 x 0.01 =bonus() 2.500
Function 10

Function totalGaji()
Dim x As Range
xx = Range("A3").Value
totalGaji = xx + (xx * 0.01)
End Function

Nilai A3 UDF RUMUS HASIL


50.000 (A3 x 0.01) + A3 =totalGaji 50.500

15 Pintar User Defined Function Copy@Right April 2020


Function 11

Function Gaji(Pokok, Istri, Anak As Range)


Dim xx, yy, zz As Integer
Dim Result As Double
xx = Pokok.Value
yy = Istri.Value
zz = Anak.Value
Result = xx + yy + zz
Gaji = Result
End Function

Gaji Istri Anak UDF RUMUS HASIL


500.000 50.000 5.000 xx + yy + zz =gaji(A3;B3;C3) 555.000

Function 12

Function JumlahKolom(Seleksi As Range)


Dim Cell As Range
For Each Cell In Seleksi
Result = Seleksi.Columns.Count
Next Cell
JumlahKolom = Result
End Function

ARAE SELECTION RUMUS HASIL


=JumlahKolom(A6:D12) 4

16 Pintar User Defined Function Copy@Right April 2020


Function 13

Function JumlahBaris(Seleksi As Range)


Dim Cell As Range
For Each Cell In Seleksi
Result = Seleksi. Rows.Count
Next Cell
JumlahBaris = Result
End Function

ARAE SELECTION RUMUS HASIL


=JumlahBaris(A6:D12) 7

Function 14

Function JumlahSheet()
JumlahSheet = Application.Sheets.Count
End Function

RUMUS HASIL
=JumlahSheet() 3
17 Pintar User Defined Function Copy@Right April 2020
Function 15

'Menghitung jumlah Page yang ada di Activesheet

Function JumlahPage()
JumlahPage = ActiveSheet.PageSetup.Pages.Count
End Function RUMUS
RUMUS HASIL =JumlahPage
=JumlahPage() 9
Function 16

Function PosisiCell()
myRow = ActiveCell.Row
myCol = ActiveCell.Column
PosisiCell = myRow & "," & myCol
End Function

A B C
1 RUMUS HASIL HASIL
2 =PosisiCell() 2,2 2,3
3 =PosisiCell() 3,2 3,3
4 =PosisiCell() 4,2 4,3
5 =PosisiCell() 5,2 5,3

18 Pintar User Defined Function Copy@Right April 2020


Function 17

Function Bayar(Harga As Range, Diskon As Range)


Dim xx As Long
Dim yy As Long
Dim hasil As Double
xx = Harga.Value
yy = Diskon.Value
hasil = xx - yy
Bayar = hasil
End Function

Harga DISKON UDF RUMUS HASIL


100.000 5.000 xx - yy =BAYAR(A2;B2) 95.000
100.000 10.000 xx - yy =BAYAR(A3;B3) 90.000
100.000 11.000 xx - yy =BAYAR(A4;B4) 89.000
100.000 15.000 xx - yy =BAYAR(A5;B5) 85.000

Function 18

Function NilaiMax(rng As Range) As Double


Dim cell As Range
For Each cell In rng
If IsNumeric(cell.Value) Then
If cell.Value > NilaiMax Then
NilaiMax = cell.Value
End If
End If
Next cell
End Function

19 Pintar User Defined Function Copy@Right April 2020


AREA RUMUS HASIL
100.000 = NilaiMax(A2:A5) 300.000
300.000
100.000
50.000

Function 19

Function JenisKelamin(AreaCell As Range)


Dim Cell As Range
For Each Cell In AreaCell
If Cell.Value = "L" Then
Result = "Laki - Laki"
ElseIf Cell.Value = "P" Then
Result = "Perempuan"
End If
Next Cell
JenisKelamin = Result
End Function

KATEGORI RUMUS HASIL


P =JenisKelamin(A2) Perempuan
L =JenisKelamin(A3) Laki - Laki
L =JenisKelamin(A4) Laki - Laki
P =JenisKelamin(A5) Perempuan

20 Pintar User Defined Function Copy@Right April 2020


Function 20

Function JumlahAngka(rColor As Range, SamaWarna As Range)


Dim rCell As Range
Dim iCol As Integer
Dim vResult
Application.Volatile (True)
iCol = rColor.Interior.ColorIndex
For Each rCell In SamaWarna
If rCell.Interior.ColorIndex = iCol Then
vResult = WorksheetFunction.Sum(rCell) + vResult
End If
Next rCell
JumlahAngka = vResult
End Function

WARNA WR HASIL RUMUS


20 40 =JumlahAngka(C2;$A$2:$A$5)
20 60 =JumlahAngka(C3;$A$2:$A$5)

30
30

Function 21

Function jumlah (SelectedRange As Range)


xx = SelectedRange
Jumlah = Application.WorksheetFunction.Sum(xx)
End Function

21 Pintar User Defined Function Copy@Right April 2020


Function 22

Function AngkaSaja(DataCell As String) as Long


Dim StringLength As Integer
StringLength = Len(DataCell)
For i = 1 To StringLength
If IsNumeric(Mid(DataCell, i, 1)) Then Result = Result & Mid(DataCell,
i, 1)
Next i
AngkaSaja = Result
End Function

KALIMAT HASIL RUMUS


HALAMAN 234 234 =ANGKASAJA(A2)
HPNO 754 WR 754 =ANGKASAJA(A3)

RRG 725 WIRO 725 =ANGKASAJA(A4)

NOKIA 531 531 =ANGKASAJA(A5)

Function 23

Function HanyaText(Data)
For I = 1 To Len(Data)
ThisChar = Mid(Data, I, 1)
Select Case Asc(ThisChar)
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58
Case Else
HanyaText = HanyaText & ThisChar
End Select
Next i
End Function

22 Pintar User Defined Function Copy@Right April 2020


A B C
1 DATA Hasil Rumus
2 NOKIA 222 NOKIA =HanyaText(B2)
3 567 GALAKSI GALAKSI =HanyaText(B3)
4 BELAJAR 336 BELAJAR =HanyaText(B4)
5 HPRR .13567 HPRR . =HanyaText(B5)
6

Function 24

Function CleanKarakter(Data As Variant) As String


Dim lng As Integer, rest As String
lng = Len(Data)
For i = 1 To lng
If Asc(Mid(Data, i, 1)) >= 65 And Asc(Mid(Data, i, 1)) <= 90 Then
rest = rest & Mid(Data, i, 1)
ElseIf Asc(Mid(Data, i, 1)) >= 97 And Asc(Mid(Data, i, 1)) <= 122
Then
rest = rest & Mid(Data, i, 1)
ElseIf Mid(Data, i, 1) >= 0 And Mid(Data, i, 1) <= 9 Then
rest = rest & Mid(Data, i, 1)
End If
Next i
CleanKarakter = rest
End Function

23 Pintar User Defined Function Copy@Right April 2020


Function 25

Function TotalAngka(Angka As Range)


Dim Cell As Range
For Each Cell In Angka
If IsNumeric(Cell.Value) = True Then
Result = Result + Cell.Value
End If
Next Cell
TotalAngka = Result
End Function

HANYA NUMBER HASIL RUMUS


50.000 100.000 =TotalAngka(A2:A5)
Nokia
WIRO sableng
50.000

Function 26

Function Ganjil (Angka As Range)


Dim Cell As Range
For Each Cell In Angka
If IsNumeric(Cell.Value) = True Then
If Cell.Value Mod 2 = 1 Then
Result = Result + Cell.Value
End If
End If
Next Cell
Ganjil = Result
End Function

24 Pintar User Defined Function Copy@Right April 2020


A B C
1 Bilangan Hasil Rumus
2 20 42 =GANJIL(A2:A5))
3 21
4 20
5 21

Function 27

Function Genap (Angka As Range)


Dim Cell As Range
For Each Cell In Angka
If IsNumeric(Cell.Value) = True Then
If Cell.Value Mod 2 = 0 Then
Result = Result + Cell.Value
End If
End If
Next Cell
Genap = Result
End Function

A B C
1 Bilangan Hasil Rumus
2 20 40 =Genap(A2:A5)
3 21
4 20
5 21

25 Pintar User Defined Function Copy@Right April 2020


Function 28

Function Hari(Tanggal As Variant) As String


If Tanggal = "" Or IsDate(Tanggal) = False Then
Hari = ""
Else
Hari = WorksheetFunction.Text(Tanggal, "dddddd")
End If
End Function

A B C
1 Tanggal Hasil Rumus
2 21/04/2020 Tuesday =hari(A2)
3 22/04/2020 Wednesday =hari(A3)
4 23/04/2020 Thursday =hari(A4)
5 24/04/2020 Friday =hari(A5)

Function 29

Function Weeknum(Indate As Date) As Long


Dim Dt As Date
Dt = DateSerial(Year(Indate - Weekday(Indate - 1) + 4), 1, 3)
Weeknum = Int((Indate - Dt + Weekday(Dt) + 5) / 7)
End Function

26 Pintar User Defined Function Copy@Right April 2020


TANGGAL MINGGU KE
21/04/2020 =WeekNum(B3)
23/05/2020 21
21/06/2020 26
27/07/2020 31
21/08/2020 34
28/09/2020 40
Function 30

Function bulan(Tanggal As Variant) As String


If Tanggal = "" Or IsDate(Tanggal) = False Then
bulan = ""
Else
bulan = WorksheetFunction.Text(Tanggal, "mmmmmm")
End If
End Function
A B C
1 Tanggal Hasil Rumus
2 21/04/2020 April =bulan(A2)
3 22/05/2020 May =bulan(A3)
4 23/06/2020 June =bulan(A4)
5 24/07/2020 July =bulan(A5)

27 Pintar User Defined Function Copy@Right April 2020


Function 31

Function Tahun(Tanggal As Variant) As String


If Tanggal = "" Or IsDate(Tanggal) = False Then
bulan = ""
Else
Tahun = WorksheetFunction.Text(Tanggal, "yyyy")
End If
End Function

A B C
1 Tanggal Hasil Rumus
2 21/04/2020 2020 =Tahun(A2)
3 22/05/2019 2019 =Tahun(A3)
4 23/06/2000 2000 =Tahun(A4)
5 24/07/2012 2012 =Tahun(A5)

Function 32

Function hitungWarna(selAcuan As Range, rangeWarna As Range)


Dim sel As Range
For Each sel In rangeWarna
If sel.Interior.Color = selAcuan.Interior.Color Then
hitungWarna = hitungWarna + 1
End If
Next
End Function

28 Pintar User Defined Function Copy@Right April 2020


Function 33

Function SumByColor(CellColor As Range, SumRange As Range)


Application.Volatile
Dim ICol As Integer
Dim TCell As Range
ICol = CellColor.Interior.ColorIndex
For Each TCell In SumRange
If ICol = TCell.Interior.ColorIndex Then
SumByColor = SumByColor + TCell.Value
End If
Next TCell
End Function

Function 34

Function Tunjangan(Golongan, Gaji As Range)


Dim xx, yy As long
Dim Result As Double
xx = Golongan.Value
yy = Gaji.Value
If xx.text =”I” then
Result = yy * 0.02
elseIf xx.text =”II” then
Result = yy * 0.04
elseIf xx.text =”III” then
Result = yy * 0.05
elseIf xx.text =”IV” then
Result = yy * 0.06
Else
Result = 0
End if
Tunjangan = Result
End Function

29 Pintar User Defined Function Copy@Right April 2020


A B C D
1 Gol Gaji Hasil Rumus
2 I 2.500.000 50000 =Tunjangan(A2;B2)
3 II 3.000.000 120000 =Tunjangan(A3;B3)
4 III 3.500.000 175000 =Tunjangan(A4;B4)
5 IV 4.000.000 240000 =Tunjangan(A5;B5)

Function 35

Function GajiBersih(Golongan, Gaji As Range)


Dim xx, yy As Integer
Dim Result As Double
xx = Golongan.Value
yy = Gaji.Value
Select Case xx
Case "I"
Result = yy * 0.02 + yy
Case "II"
Result = yy * 0.04 + yy
Case "III"
Result = yy * 0.05 + yy
Case "IV"
Result = yy * 0.06 + yy
Case Else
Result = 0
End Select
GajiBersih = Result
End Function

30 Pintar User Defined Function Copy@Right April 2020


A B C D
1 Gol Gaji Gaji Bersih Rumus
2 I 2.500.000 2.550.000 =GajiBersih(A2;B2)
3 II 3.000.000 3.120.000 =GajiBersih(A3;B3)
4 III 3.500.000 3.675.000 =GajiBersih(A4;B4)
5 IV 4.000.000 4.240.000 =GajiBersih(A5;B5)

Function 36

Function Bonus(Jumlah, Untung As Range)


Dim xx1, yy11 As Integer
Dim Result As Double
xx1 = Jumlah.Value
yy1 = Untung.Value
Select Case xx1
Case 1 To 5
Result = yy1 * 0.02
Case 6 To 10
Result = yy1 * 0.04
Case 11 To 15
Result = yy1 * 0.05
Case Is > 16
Result = yy1 * 0.06
Case Else
Result = 0
End Select
Bonus = Result
End Function

31 Pintar User Defined Function Copy@Right April 2020


A B C D
1 Terjual Keuntungan Hasil Rumus
2 1 100.000 1.000 =Bonus(A2;B2)
3 6 600.000 12.000 =Bonus(A3;B3)
4 11 1.100.000 33.000 =Bonus(A4;B4)
5 20 2.000.000 80.000 =Bonus(A5;B5)
6
7 Bonus 1-5 1%
8 6 -10 2%
9 11-15 3%
10 15 < 4%

Function 37

Function Terbilang(n As Long) As String


'max 2.147.483.647
Dim satuan As Variant, Minus As Boolean
On Error GoTo terbilang_error
satuan = Array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam",
"Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas")
If n < 0 Then
Minus = True
n = n * -1
End If
Select Case n
Case 0 To 11
Terbilang = " " + satuan(Fix(n))
Case 12 To 19
Terbilang = Terbilang(n Mod 10) + " Belas"
Case 20 To 99
Terbilang = Terbilang(Fix(n / 10)) + " Puluh" + Terbilang(n Mod 10)
Case 100 To 199
32 Pintar User Defined Function Copy@Right April 2020
Terbilang = " Seratus" + Terbilang(n - 100)
Case 200 To 999
Terbilang = Terbilang(Fix(n / 100)) + " Ratus" + Terbilang(n Mod
100)
Case 1000 To 1999
Terbilang = " Seribu" + Terbilang(n - 1000)
Case 2000 To 999999
Terbilang = Terbilang(Fix(n / 1000)) + " Ribu" + Terbilang(n Mod
1000)
Case 1000000 To 999999999
Terbilang = Terbilang(Fix(n / 1000000)) + " Juta" + Terbilang(n Mod
1000000)
Case Else
Terbilang = Terbilang(Fix(n / 1000000000)) + " Milyar" + Terbilang(n
Mod 1000000000)
End Select
If Minus = True Then
Terbilang = "Minus" + Terbilang
End If
Exit Function
terbilang_error:
MsgBox Err.Description, vbCritical, "^_^Terbilang Error"
End Function

33 Pintar User Defined Function Copy@Right April 2020


Terbilang Macro
Angka Huruf
Rp 5.555 Lima Ribu Lima Ratus Lima Puluh Lima Rupiah
Rp 5.555 Lima Ribu Lima Ratus Lima Puluh Lima Rupiah
Rp 12.500.000 Dua Belas Juta Lima Ratus Ribu Rupiah
Rp 550.500 Lima Ratus Lima Puluh Ribu Lima Ratus Rupiah
Rp 44 Empat Puluh Empat Rupiah
Rp 777 Tujuh Ratus Tujuh Puluh Tujuh Rupiah
Rp 555 Lima Ratus Lima Puluh Lima Rupiah
Rp 8.888 Delapan Ribu Delapan Ratus Delapan Puluh Delapan Rupiah
Rp 8.888 Delapan Ribu Delapan Ratus Delapan Puluh Delapan Rupiah

Function 38

Function Terbilang(Bil As Double) As String


Dim Utuh As Long, Pecah As Long
Dim strUtuh As String, strPecah As String
Utuh = Int(Bil): Pecah = Round((Bil - Utuh) * 100, 0)
If Utuh = 0 Then strUtuh = "Nol " Else strUtuh = Translator(Utuh)
Select Case Pecah
Case 0: strPecah = "Nol Nol"
Case Is < 10: strPecah = "Nol " & Translator(Pecah)
Case Else: strPecah = Translator(Pecah)
End Select
Terbilang = WorksheetFunction.Proper(strUtuh & " Koma " &
strPecah)
End Function

34 Pintar User Defined Function Copy@Right April 2020


UDF VBA TERBILANG

Nilai
NO NAMA
angka Hurup
1 Agama 55,77 Lima Puluh Lima Koma Tujuh Puluh Tujuh
2 PPKN 22,00 Dua Puluh Dua Koma Nol Nol
3 Bahasa Indonesia 55,79 Lima Puluh Lima Koma Tujuh Puluh Sembilan
4 IPA 55,80 Lima Puluh Lima Koma Delapan Puluh
5 Matematika 55,81 Lima Puluh Lima Koma Delapan Puluh Satu
6 I PS 55,82 Lima Puluh Lima Koma Delapan Puluh Dua
7 PJOK 55,83 Lima Puluh Lima Koma Delapan Puluh Tiga
8 SBDB 55,84 Lima Puluh Lima Koma Delapan Puluh Empat
9 Bahasa Inggris 55,85 Lima Puluh Lima Koma Delapan Puluh Lima
10 Muatan Lokal 55,86 Lima Puluh Lima Koma Delapan Puluh Enam
55,87 Lima Puluh Lima Koma Delapan Puluh Tujuh
Rata - Rata 52,75 Lima Puluh Dua Koma Tujuh Puluh Lima

Function RataRata(data As Range)


xx = data
RataRata = Application.WorksheetFunction.Average(xx)
End Function

Function maksimal (SelectedRange As Range)


xx = SelectedRange
maksimal = Application.WorksheetFunction.max(xx)
End Function

TAMAT

35 Pintar User Defined Function Copy@Right April 2020

Anda mungkin juga menyukai