Pengantar.
Ada kalanya Modul Kelas tertentu perlu dipakai lebih dari sekali, untuk menggunakan kumpulan nilai yang serupa untuk Aplikasi tertentu.
Misalnya Modul Kelas ClsArea kami, kami telah merancang untuk menghitung luas karpet Kamar adalah kandidat untuk aplikasi serupa. Asumsikan bahwa kita ingin mengetahui berapa banyak ubin lantai yang kita butuhkan untuk diletakkan di sebuah ruangan maka kita harus dapat memasukkan nilai Panjang dan Lebar Ubin juga, selain nilai dimensi Lantai. Karena, Lantai dan Ubin memiliki nilai Properti yang sama sebagai input, kita dapat menggunakan dua instance Modul Kelas ClsArea, satu instance untuk area FLOOR dan instance kedua untuk area TILE. Floor-Area / Tile-Area memberikan jumlah total ubin untuk ruangan tertentu.
Dua Instance dari Modul Kelas yang sama.
Kita dapat melakukan ini dengan membuat dua contoh berbeda dari Modul Kelas ClsArea dalam Program Modul Standar jika hanya ada satu Ruangan.
Public Sub FloorTiles() Dim FLOOR As ClsArea Dim TILES As ClsArea Dim flrArea As Double, tilearea As Double Dim lngTiles As Long Set FLOOR = New ClsArea Set TILES = New ClsArea FLOOR.strDesc = "Bed Room1" FLOOR.dblLength = 25 FLOOR.dblWidth = 15 flrArea = FLOOR.Area() TILES.strDesc = "Off-White" TILES.dblLength = 2.5 TILES.dblWidth = 1.25 tilearea = TILES.Area() lngTiles = flrArea / tilearea Debug.Print FLOOR.strDesc & " Required Tiles: " & lngTiles & " Numbers - Color: " & TILES.strDesc Set FLOOR = Nothing Set TILES = Nothing End Sub
Menangani Array Objek.
Namun, bagaimana jika kita perlu menerapkan cara di atas untuk susunan beberapa ruangan dengan ukuran atau warna ubin yang berbeda? Jawabannya adalah membuat Modul Kelas baru dengan dua instance ClsArea yang sama Kelas, satu contoh untuk Lantai, dan yang lainnya untuk Ubin Properti. Kedua instance dibungkus dalam Modul Kelas baru.
Mari kita lakukan itu.
- Buka Database Anda dan tampilkan Jendela Pengeditan Kode (ALT+F11).
- Pilih Modul Kelas dari Sisipkan Menu.
- Ubah Nama Nilai properti untuk ClsTiles .
- Salin dan Tempel Kode VBA berikut ke dalam Modul Kelas ClsTiles dan simpan Kode:
Option Compare Database Option Explicit Private pFLOOR As ClsArea Private pTILES As ClsArea Private Sub Class_Initialize() Set pFLOOR = New ClsArea Set pTILES = New ClsArea End Sub Private Sub Class_Terminate() Set pFLOOR = Nothing Set pTILES = Nothing End Sub Public Property Get Floor() As ClsArea Set Floor = pFLOOR End Property Public Property Set Floor(ByRef NewValue As ClsArea) Set pFLOOR = NewValue End Property Public Property Get Tiles() As ClsArea Set Tiles = pTILES End Property Public Property Set Tiles(ByRef NewValue As ClsArea) Set pTILES = NewValue End Property Public Function NoOfTiles() As Long NoOfTiles = pFLOOR.Area() / pTILES.Area() End Function
Kedua instance, pFLOOR, dan pTILES dideklarasikan sebagai Private Properties dari ClsTiles Class Object.
Class_Initialize() Subrutin membuat instance kedua objek dalam memori saat ClsTiles Modul Kelas dibuat dalam program pengguna.
Kelas_Terminasi() subrutin menghapus kedua instans (pFLOOR dan pTILES) dari memori ketika instans Modul Kelas ClsTiles disetel ke Tidak Ada di program pengguna.
Dapatkan dan Setel Prosedur Properti memungkinkan pengambilan dan penetapan nilai, masing-masing dari dan ke instance pFLOOR, di Objek Kelas ClsTiles.
Prosedur Get and Set Property berikutnya memungkinkan operasi yang sama dalam instance pTILES dari Kelas ClsArea.
Kami telah menambahkan fungsi baru NoOfTiles() di Modul Kelas baru, untuk menghitung jumlah ubin, berdasarkan dimensi Luas Lantai dan Ubin.
Mari kita menulis Program dan mempelajari penggunaan beberapa instance dari Objek Kelas yang sama, dalam Modul Kelas baru:ClsTiles.
- Salin dan tempel Kode VBA berikut ke dalam Modul Standar:
Public Sub TilesCalc() Dim FTiles As ClsTiles Dim TotalTiles As Long Set FTiles = New ClsTiles FTiles.Floor.strDesc = "Warehouse" FTiles.Floor.dblLength = 100 FTiles.Floor.dblWidth = 50 FTiles.Tiles.dblLength = 2.5 FTiles.Tiles.dblWidth = 1.75 TotalTiles = FTiles.NoOfTiles() Debug.Print "Site Name", "Floor Area", "Tile Area", "No. of Tiles" Debug.Print FTiles.Floor.strDesc, FTiles.Floor.Area, FTiles.Tiles.Area, TotalTiles End Sub
- Biarkan Jendela Debug Terbuka (CTRL+G) untuk mencetak data pengujian.
- Klik di suatu tempat di tengah Kode VBA dan Tekan F5 Kunci untuk menjalankan Kode. Hasilnya dicetak pada Jendela Debug.
Jika Anda ingin menghitung kebutuhan ubin beberapa ruangan atau ruangan beberapa lantai sebuah gedung bertingkat maka Anda harus menjalankan program di atas beberapa kali dan mencatat nilainya, yang praktis sangat sulit.
Menemukan Kebutuhan Ubin Beberapa Ruangan.
Sekarang, mari kita tulis program lain untuk menemukan persyaratan Tile dari beberapa Ruangan, dengan Array ClsTiles Objek dengan memasukkan nilai Properti langsung dari keyboard.
- Salin dan Tempel Kode VBA berikut ke dalam Modul Standar.
Public Sub TilesCalc2() Dim tmpFT As ClsTiles Dim FTiles() As ClsTiles Dim j As Long, L As Long, H As Long For j = 1 To 3 Set tmpFT = New ClsTiles 'Floor dimension With tmpFT.Floor .strDesc = InputBox(Str(j) & ") Floor Desc", , 0) .dblLength = InputBox(Str(j) & ") Floor Length", , 0) .dblWidth = InputBox(Str(j) & ") Floor Width", , 0) End With 'Tile Dimension With tmpFT.Tiles .strDesc = InputBox(Str(j) & ") Tiles Desc", , 0) .dblLength = InputBox(Str(j) & ") Tile Length", , 0) .dblWidth = InputBox(Str(j) & ") Tile Width", , 0) End With ReDim Preserve FTiles(1 To j) As ClsTiles Set FTiles(j) = tmpFT Set tmpFT = Nothing Next 'Take Printout L = LBound(FTiles) H = UBound(FTiles) Debug.Print "FLOOR", "Floor Area", "TILES", "Tile Area", "Total Tiles" For j = L To H With FTiles(j) Debug.Print .Floor.strDesc, .Floor.Area(), .Tiles.strDesc, .Tiles.Area(), .NoOfTiles End With Next 'Remove all objects from memory For j = L To H Set FTiles(j) = Nothing Next End Sub
- Biarkan Jendela Debug tetap terbuka untuk mencetak output di sana.
- Jalankan Kode seperti sebelumnya dan masukkan nilai untuk dimensi Lantai dan Ubin untuk tiga Ruangan.
Seperti yang dapat Anda lihat dari kode di atas bahwa kedua nilai dimensi Room dan Tile masuk ke instance Class Object Array yang sama, berdampingan.
Program di atas adalah demo yang berjalan hanya untuk tiga set nilai dalam For. . . putaran berikutnya. Itu dapat dimodifikasi dengan loop bersyarat yang berjalan beberapa kali hingga kode pemutusan bersyarat menghentikan program.
Program dapat dimodifikasi untuk menyimpan setiap set nilai data dan hasil perhitungan dalam Tabel untuk referensi di masa mendatang.
Kelas Pembungkus adalah Wadah Kelas untuk instance dari Kelas lain, Struktur Data, atau kumpulan instance objek lain. Di sini kita telah menggunakannya untuk menampung dua instance dari Object kelas yang sama.
Daftar Semua Tautan pada Topik ini.
- Modul Kelas MS-Access dan VBA
- Array Objek Kelas VBA MS-Access
- Kelas Dasar MS-Access dan Objek Turunannya
- Kelas Dasar VBA dan Objek Turunan-2
- Varian Kelas Dasar dan Objek Turunan
- Set Rekaman Ms-Access dan Modul Kelas
- Mengakses Modul Kelas dan Kelas Pembungkus
- Transformasi Fungsionalitas Kelas Wrapper
- Dasar-dasar Ms-Access dan Objek Koleksi
- Modul Kelas Ms-Access dan Objek Koleksi
- Rekaman Tabel dalam Objek dan Formulir Koleksi
- Dasar-dasar Objek Kamus
- Dasar-Dasar Objek Kamus-2
- Mengurutkan Kunci Objek dan Item Kamus
- Menampilkan Rekaman dari Kamus ke Formulir
- Menambahkan Objek Kelas sebagai Item Kamus
- Menambahkan Objek Kelas sebagai Item Kamus
- Memperbarui Item Kamus Objek Kelas pada Formulir