Menampilkan text informasi pada peta

  1. 5 bulan yang lalu

    Disini saya ingin menanyakan mengenai VBA & Macro excel. Saya mempunyai peta lokasi. Peta tersebut terdiri dari beberapa lokasi. Pertanyaanya, bagaimana cara saya untuk memunculkan text informasi mengenai lokasi tersebut ketika saya mengarahkan cursor ke lokasi terkait. Terima kasih.
    Mohon bantuannya suhu suhu sekalian.

  2. Caton

    Peb 11 Terverifikasi Indonesia + 9.203 Poin
    Di sunting 5 bulan yang lalu oleh Caton

    Pada dasarnya, hal utama yang perlu dilakukan adalah mendeteksi posisi mouse apakah berada pada titik atau spot tertentu. Ada beberapa cara untuk melakukan hal tersebut, namun cara termudah yang dapat dilakukan adalah dengan memanfaatkan Event Procedure dari sebuah ActiveX Control (bukan kontrol pada Form Object, karena kontrol-kontrol tersebut tidak memiliki Event Procedure).

    Untuk membuat sebuah Hotspot dari lokasi, bisa menggunakan Label Control atau Image Control, atau bisa juga dengan menggunakan kontrol lainnya. Untuk membuat PopUp Info dapat ditampilkan dan disembunyikan saat kursor mouse berada di dalam atau di luar Hotspot, gunakan 2 buah kontrol sebagai Hotspot Object-nya dengan cara:

    — Buat atau letakkan kontrol (Label Control atau Image Control) pertama pada lokasi yang akan dijadikan Hotspot pada sebuah sheet. Atur ukuran sesuai keinginan, namun tidak perlu besar (misalkan saja 10mm x 10mm atau sekitar 28,5 point x 28,5 point). Berikan nama yang unik, misalkan Spot001Ex. Kontrol ini digunakan untuk menyembunyikan PopUp info.

    — Kemudian tambahkan kontrol kedua pada lokasi yang sama dengan lokasi kontrol pertama (atau salin kontrol pertama, lalu paste). Atur ukuran sesuai keinginan, namun ukuran kontrol kedua ini harus lebih kecil dari kontrol pertama (misalkan saja 5mm x 5mm atau sekitar 14,25 point x 14,25 point). Berikan nama yang unik, misalkan Spot001In. Kontrol ini digunakan untuk menampilkan PopUp info.

    — Atur agar posisi kontrol kedua berada di tengah-tengah kontrol pertama, dan berada di atas kontrol pertama (overlay). Ilustrasinya:

    spot01.png

    — Atur properti kedua kontrol tersebut:

    BackStyle	: Transparan
    BorderStyle	: None

    Klik kanan pada setiap kontrol, lalu pilih menu Format Control... Pada jendela dialog yang muncul, pilih tab Properties, lalu pilih opsi Don't move or size with cells. Bila ingin menampilkan semacam ikon Hotspot, maka isi properti Picture kontrol kedua (Spot001In) dengan gambar yang diinginkan.

    — Kemudian tambahkan objek yang akan digunakan untuk menampilkan informasi (PopUp Object). Bisa menggunakan Shape Object, ActiveX Control atau Form Control. Atur properti objek tersebut dengan informasi yang akan ditampilkan (misalkan gambar dan sebagainya). Isi nama objek tersebut (untuk Shape Object, gunakan Name Box untuk mengubah/membuat nama objek), misalkan Popup001.

    PopUp.png

    — Pilih (seleksi) kedua Hotspot Object tersebut dan jadikan satu Group Object (untuk kontrol Hotspot Object sebaiknya dijadikan satu grup per spot/lokasi). Kemudian, pilih (seleksi) Hotspot Object dan PopUp Object tersebut lalu jadikan satu Group Object (opsional).

    — Sembunyikan PopUp Object ini menggunakan Selection Pane:

    PopUp-Visibility.png

    atau buka VBE, lalu tampilkan Immediate Window (CONTROL G), dan ketik:

    ActiveSheet.Shapes("Popup001").Visible = False

    dan tekan tombol ENTER untuk mengeksekusi script tersebut.

    Sampai di sini, kita sudah membuat HotSpot Object dan PopUp Object yang dibutuhkan. Tahap selanjutnya adalah menambahkan script untuk menangani proses saat kursor mouse masuk atau ke luar HotSpot Object.

  3. Caton

    Peb 11 Terverifikasi Indonesia + 9.203 Poin

    Script untuk Hotspot Object pada dasarnya sama untuk setiap spot/lokasi. Memanfaatkan Event Procedure yang sama yakni MouseMove. Yang membedakan hanyalah pengaturan properti Visible dari PopUp Object. Script utamanya:

    Option Explicit
    
    Private Sub Spot001Ex_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If Me.Shapes("PopUp001").Visible = msoTrue Then
            Me.Shapes("PopUp001").Visible = msoFalse
        End If
    
    End Sub
    
    Private Sub Spot001In_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If Me.Shapes("PopUp001").Visible = msoFalse Then
            Me.Shapes("PopUp001").Visible = msoTrue
        End If
    End Sub

    Bila setiap Hotspot Object hanya dibedakan oleh nomor indeksnya saja, maka tinggal menyalin dan menempelkan kedua Event Procedure di atas untuk setiap Hotspot Object yang ada pada Worksheet, dan kemudian mengganti nomor indeksnya saja, misalkan Spot001Ex menjadi Spot002Ex, Spot001In menjadi Spot002In, PopUp001 menjadi PopUp002. Demikian seterusnya.

    Demikian yang bisa saya sampaikan. Terlampir contoh yang saya buat. Selamat mencoba dan semoga bermanfaat... ;)

  4. Kereeeen :D

  5. Ijin sedot ah, kereen hehe :D

  6. Caton

    Peb 17 Terverifikasi Indonesia + 9.203 Poin

    ... Ijin sedot ah ...

    Silahkan mas bro... :) Mas @Yuda Pratama sendiri entah kemana... (^_^)/

  7. @Caton Silahkan mas bro... :) Mas @Yuda Pratama sendiri entah kemana... (^_^)/

    Terima kasih mas atas informasinya @Caton . Maaf sebelumnya baru nongol. Habis ada kesibukan.

 

atau Mendaftar untuk ikut berdiskusi!