[belajar-excel] Memanggil Sub dengan merujuk pada WorksheetFunction atau isi cell

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[belajar-excel] Memanggil Sub dengan merujuk pada WorksheetFunction atau isi cell

ris ha
Assalamu'alaikum.
Mohon bantuannya terkait cara memanggil Sub.Secara umum memanggil Sub yang saya ketahui adalah
Call Nama_Sub
Misal
Call Colour
Sub Colour()
MsgBox "ColourXX"
End Sub

1. Saya hendak melakukan looping data, Nama_Sub saya sesuaikan dengan data, hanya saja Spasi saya ubah menjadi _Contoh

Call WorksheetFunction.Substitute(Sheets("Parameter").Cells(3, Cel2.Column), " ", "_")
akan tetapi dengan macro tersebut Nama_Sub tidak terpanggil
2. Bagaimana caranya jika memanggil Sub dengan merujuk pada cell. Contoh
Sheets("SpecProduk").Range("A6") = "Spec_" & WorksheetFunction.Substitute(Cel2.Value, " ", "_")
Call Sheets("SpecProduk").Range("A6")

Mohon pencerahannya
Atas perhatinnya terucap terima kasih, semoga Alloh Ta'ala memberikan balasan atas setiap ilmu yang digunakannya.Amin
SalamHaris
Kid
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] Memanggil Sub dengan merujuk pada WorksheetFunction atau isi cell

Kid
Administrator
Wa'alaikumussalam wr wb

hmmm...
membuat nama prosedur mirip dengan teks inputan seperti yang Anda lakukan,
akan terkesan baik atau simpel, tetapi hal itu tidak dianjurkan dan
biasanya dihindari.

Biasanya kasus seperti ini akan menggunakan 1 prosedur utama yang selalu
dipanggil pertama, dan mungkin (tergantung kebutuhan proses) prosedur utama
itu akan memanggil prosedur lain yang sesuai kebutuhan.

Contoh :
Jika cells A1 bisa berisi nilai X,Y,Z dan setiap nilai isian tersebut akan
memilki proses yang sangat berbeda, maka :
1. Dibuat sebuah prosedur utama (misal bernama BerdasarNilai_di_A1) dengan
scope public
    > isi di prosedur ini berisi pemeriksaan nilai A1, lalu mengarahkan ke
proses X, Y, atau Z
        select case sheets("input").range("a1").value
        case "X","x"   'misal proses X sangat simpel, maka proses langsung
ditulis [seperti copy dari sheet data range A1:Z17 dan paste values di
sheet output range B7]
              sheets("data").range("a1:z17").copy
              sheets("output").range("b7").pastespecial xlpastevalues
        case "Y","y"    'misal, proses Y cukup panjang, maka dibuat
prosedur ber-scope private bernama Proses_Y
              Proses_Y
        case "Z","z"
              'isi proses Z atau baris pemanggil prosedur Z
        case else
             'pesan tertentu misalnya
        end select

2. Jika setiap proses yang dirujuk oleh prosedur utama adalah suatu proses
yang cukup kompleks atau panjang, maka perlu dibuat prosedur terkait dengan
scope private
       private sub Proses_Y()
              'baris kode proses Y di sini, bisa memanggil prosedur lain
dan sebagainya
       end sub


Object application menyediakan function (methods) untuk mengeksekusi
prosedur bernama Run.
Dan pastikan function ini digunakan secara hati-hati.
Syntax :
        Application.Run "nama_prosedur" [, parameter1 [, parameter N]]
        *** jadi, parameter input yang diminta prosedur yang dipanggil bisa
disediakan di bagian parameter1, dst sampai parameter N sesuai kebutuhan
lengkapnya (bagian penyediaan nilai parameter di atur sendiri sesuai
kebutuhan prosedur yang dipanggil)
        Application.Run "'drive:\folder\subfolder\nama file.ekstensi'!
nama_module.nama_prosedur"
a. jika di workbook yang sama, nama file lengkap tidak perlu disertakan
(nama file lengkap mulai dari ' sampai '! [yang biru])
b. jika nama prosedur bersifat unique, maka bagian nama_module. tidak perlu
disertakan

Wassalamu'alaikum wr wb
Kid











On Wed, Jan 2, 2019 at 11:01 AM ris ha [hidden email]
[belajar-excel] <[hidden email]> wrote:

>
>
> Assalamu'alaikum.
>
> Mohon bantuannya terkait cara memanggil Sub.
> Secara umum memanggil Sub yang saya ketahui adalah
>
> *Call Nama_Sub*
>
> Misal
>
> *Call Colour*
>
>
>
> *Sub Colour()MsgBox "ColourXX"End Sub*
>
> 1. Saya hendak melakukan looping data, *Nama_Sub* saya sesuaikan dengan
> data, hanya saja Spasi saya ubah menjadi _
> Contoh
>
> *Call WorksheetFunction.Substitute(Sheets("Parameter").Cells(3,
> Cel2.Column), " ", "_")*
>
> akan tetapi dengan macro tersebut *Nama_Sub* tidak terpanggil
>
> 2. Bagaimana caranya jika memanggil Sub dengan merujuk pada cell. Contoh
>
> *Sheets("SpecProduk").Range("A6") = "Spec_" &
> WorksheetFunction.Substitute(Cel2.Value, " ", "_")*
> Call *Sheets("SpecProduk").Range("A6")*
>
> Mohon pencerahannya
>
> Atas perhatinnya terucap terima kasih, semoga Alloh Ta'ala memberikan
> balasan atas setiap ilmu yang digunakannya.
> Amin
>
> Salam
> Haris
>
>
>