Cart atau biasa yang saya sebut dengan grafik merupakan tampilan berupa gambar yang bersumber pada table data, tampilan gambarnya bias berupa balok, lingkaran, bola, buujur sangkar dan lain sebagianya. Oleh pengguna excel cart biasanya hanya ditampikan dalam worksheet, namun taukah anda bahwa kita juga bias menampilkan cart dalam userform


Sebelum kita membuat cart dengan userform alanhkah baiknya kita mengenali terlebih dahulu macam macam cart yang terdapat pada Microsoft excel

Column carts
Grafik Kolom digunakan untuk menunjukkan perubahan data dalam periode waktu tertentu atau menggambarkan perbandingan antar beberapa item. Jenis grafik itu sering juga disebut diagram batang
Grafik kolom atau diagram batang umum digunakan dalam dunia statistik untuk menampilkan data pertambahan dan perbandingan jumlah penduduk dari waktu ke waktu

Line Charts
Grafik garis dapat menunjukkan data secara terus menerus atau berkelanjutan selama periode waktu tertentu. Grafik ini sangat ideal untuk menampilkan tren data pada interval/rentang waktu yang sama.

Bar Charts
Bar Chart atau grafik baris mirip dengan grafik kolom. Grafik batang menggambarkan perbandingan antar beberapa item dan merupakan penyajian data alternatif dari grafik kolom. Dengan menggunakan jenis ini kita dapat menyajikan data yang maknanya sama dengan grafik kolom yaitu dengan menukar letak variabel dari sumbu x menjadi sumbu y dan sebaliknya.

Pie Charts
Grafik lingkaran menunjukkan ukuran dari suatu item dalam suatu rangkaian data, secara proporsional terhadap jumlah dari keseluruhan item. Poin atau nilai dari item-item tersebut ditunjukkan dalam bentuk presentase dari keseluruhan data (dalam bentuk satu lingkaran). Biasa digunakan dalam menampilkan data persentase jumlah penduduk berdasarkan tingkat pendidikannya dan lain sebagainya.

Area Charts
Grafik bidang menekankan besarnya perubahan dari waktu ke waktu. Grafik ini dapat digunakan untuk menggambar grafik hubungan kecepatan dan waktu pada gerak lurus, area yang terbentuk merupakan besar perpindahan.

XY Scatter
XY scatter umum digunakan untuk menggambar grafik. Grafik ini menunjukkan hubungan antara nilai-nilai variabel sumbu x dengan nilai-nilai variabel sumbu y. Grafik ini dapat kita gunakan untuk menggambar grafik linear misalnya grafik tegangan versus kuat arus dan lain sebagainya.

Stock Charts
Grafik stok banyak digunakan untuk menggambarkan fluktuasi harga stok. Namun grafik ini juga dapat digunakan untuk data ilmiah. Sebagai contoh, kita dapat menggunakannya untuk menunjukkan fluktuasi suhu harian di suatu daerah.

Surface Charts
Grafik permukaan sangat berguna ketika kita ingin mencari kombinasi yang optimal dari 2 rangkaian data. Seperti dalam peta topografi, warna dan pola menunjukkan daerah yang berada dalam kisaran nilai yang sama.

Radar
Grafik radar membandingkan nilai keseluruhan dari sejumlah rangkaian data.

Combo
Combo merupakan grafik kombinasi dari beberapa jenis grafik sekaligus misalnya mengkombinasikan grafik kolom dengan grafik garis dan lain sebagainya.

Setelah mengetahui macam macam Chart dalam Microsoft excel saatnya kita langsung praktek membuat Chart dengan userform, artikel semacam ini tidak akan anda temukan kecuali di asis10.com (hehehehehehe). Logika yang digunakan dalam menampilkan chart kedalam userform adalah copy paste, kenapa saya sebut copy paste ?? alasanya ada dua

Alasan pertama adalah untuk menampilkan chart dalam userform saya akan menggunakan control Image. Alasan kedua meskipun objek saya adalah userform akan tetapi chart ini tidak akan bisa ditampilkan dalam userform jika anda tidak membuat chart terlebih dahulu didalam worksheet tabel

MEMBUAT CHART USERFORM
Baiklah sekarang saatnya meninggalkan teori, untuk membuat chart dalam userform maka anda harus membuat tabel terlebi dahulu, coba buat tabel sederhana saja, misalnya saya membuat tabel saldo dengan kolom A adalah nama nama bulan dan kolom B adalah perkembangan saldo


Setelah itu masukan chart dengan cara pilih menu tab Insert, perhatikan area Charts lalu pilih Column, dan gunakan data area dari kolom A sampai kolom B =Sheet1!$A$1:$B$11


Setalah anda berhasil membuat chart dalam worksheet, langkah selanjutnya masuk kedalam jendela VBE dengan menekan tombol Alt+F11
Buat design form dengan kontrol Immage rubah namanya menjadi Asis10_Image
Buat modul dengan kode macro dibawah ini

Option Compare Text
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Type uPicDesc
Size As Long
Type As Long
hPic As Long
hPal As Long
End Type
Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Integer) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As uPicDesc, RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Declare Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
Declare Function CopyImage Lib "user32" (ByVal handle As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

Const CF_BITMAP = 2
Const CF_PALETTE = 9
Const CF_ENHMETAFILE = 14
Const IMAGE_BITMAP = 0
Const LR_COPYRETURNORG = &H4

Function PastePicture(Optional lXlPicType As Long = xlPicture) As IPicture
Dim h As Long, hPicAvail As Long, hPtr As Long, hPal As Long, lPicType As Long, hCopy As Long
lPicType = IIf(lXlPicType = xlBitmap, CF_BITMAP, CF_ENHMETAFILE)
hPicAvail = IsClipboardFormatAvailable(lPicType)

If hPicAvail <> 0 Then
h = OpenClipboard(0&)'Menampilkan Chart dengan Userform


If h > 0 Then
hPtr = GetClipboardData(lPicType)
If lPicType = CF_BITMAP Then
hCopy = CopyImage(hPtr, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
Else
hCopy = CopyEnhMetaFile(hPtr, vbNullString)
End If
h = CloseClipboard
If hPtr <> 0 Then Set PastePicture = CreatePicture(hCopy, 0, lPicType)
End If
End If

End Function

Private Function CreatePicture(ByVal hPic As Long, ByVal hPal As Long, ByVal lPicType) As IPicture
Dim r As Long, uPicInfo As uPicDesc, IID_IDispatch As GUID, IPic As IPicture
Const PICTYPE_BITMAP = 1
Const PICTYPE_ENHMETAFILE = 4
With IID_IDispatch
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With

With uPicInfo
.Size = Len(uPicInfo)
.Type = IIf(lPicType = CF_BITMAP, PICTYPE_BITMAP, PICTYPE_ENHMETAFILE)
.hPic = hPic
.hPal = IIf(lPicType = CF_BITMAP, hPal, 0)
End With
r = OleCreatePictureIndirect(uPicInfo, IID_IDispatch, True, IPic)
If r <> 0 Then Debug.Print "Create Picture: " & fnOLEError(r)
Set CreatePicture = IPic
End Function

Private Function fnOLEError(lErrNum As Long) As String

Const E_ABORT = &H80004004&
Const E_ACCESSDENIED = &H80070005&
Const E_FAIL = &H80004005&
Const E_HANDLE = &H80070006&
Const E_INVALIDARG = &H80070057&
Const E_NOINTERFACE = &H80004002&
Const E_NOTIMPL = &H80004001&
Const E_OUTOFMEMORY = &H8007000E&
Const E_POINTER = &H80004003&
Const E_UNEXPECTED = &H8000FFFF&
Const S_OK = &H0

Select Case lErrNum
Case E_ABORT
fnOLEError = " Aborted"
Case E_ACCESSDENIED
fnOLEError = " Access Denied"
Case E_FAIL
fnOLEError = " General Failure"
Case E_HANDLE
fnOLEError = " Bad/Missing Handle"
Case E_INVALIDARG
fnOLEError = " Invalid Argument"
Case E_NOINTERFACE
fnOLEError = " No Interface"
Case E_NOTIMPL
fnOLEError = " Not Implemented"
Case E_OUTOFMEMORY
fnOLEError = " Out of Memory"
Case E_POINTER
fnOLEError = " Invalid Pointer"
Case E_UNEXPECTED
fnOLEError = " Unknown Error"
Case S_OK
fnOLEError = " Success!"
End Select 'Menampilkan Chart dengan Userform

End Function

Kode macronya campur campur jadi agak lumayan panjang, setelah itu masuk lagi kearea Userform, tambahkan kode macro dibawah ini kedalam area kode userform

Dim iChartType As Long
Private Sub UserForm_Activate()
iChartType = IIf(cb3D, xl3DColumn, xlColumnClustered)
UpdateChart
End Sub
Private Sub UpdateChart()
Dim oCht As Chart, lPicType As Long
Set oCht = Sheet1.ChartObjects(1).Chart'Menampilkan Chart dengan Userform

Sheet1.Calculate
With oCht
.ChartType = iChartType
.CopyPicture xlScreen, lPicType, xlScreen
End With
Set Asis10_image.Picture = PastePicture(lPicType)
End Sub

Jika semua petunjuk diatas anda lakukan dengan benar mestinya tidak ada masalah, untuk mencoba apakah berhasil atau tidak chart yang anda buat tekan F5
Demikianlah cara membuat chart dalam userform, semoga dapat dipahami dengan baik dan benar. Terimakasih
2 comments
Wasis Zain

Tes komentar menampilkan data dengan chart - membuat chart dengan vba - chart excel - chart macro

Reply
Sudrajat Djoyohadikusumo

mas apakah bisa membuat combo box active x control dengan form x terhubung ?

Reply