hehehe... kalo ini jelas bukan quiz, soale ada keterangan resminya...
masalahnya adalah tipe data.
Pada
Array("Sheet1", "Sheet2", "Sheet4", "Sheet5")
yang berupa string adalah nilai Sheet1 kemudian nilai Sheet2 lalu nilai
Sheet4 beserta nilai Sheet5 karena semua nilai-nilai itu didefinisikan
dengan diapit tanda petik.
Jadi, bunyi "Sheet1", "Sheet2", "Sheet4", "Sheet5" (secara utuh) bukanlah
string yang bernilai "Sheet1", "Sheet2", "Sheet4", "Sheet5"
Array(shNames)
dengan shNames bertipe string, jika ditulis lugas akan menjadi :
Array("""Sheet1"", ""Sheet2"", ""Sheet4"", ""Sheet5""")
dan berbeda dengan bunyi :
Array("Sheet1", "Sheet2", "Sheet4", "Sheet5")
bukan ?
bedanya :
Array("Sheet1", "Sheet2", "Sheet4", "Sheet5") membentuk array dengan 4 item
didalamnya
dan
Array("""Sheet1"", ""Sheet2"", ""Sheet4"", ""Sheet5""") membentuk array
dengan 1 item didalamnya yang berbunyi "Sheet1", "Sheet2", "Sheet4",
"Sheet5"
hasilnya, proses oleh methods Select menghasilkan error karena tidak ada
sheet bernama "Sheet1", "Sheet2", "Sheet4", "Sheet5" dalam workbook.
sekarang pakai bahasa programmer :
Array() adalah function yang bisa menerima parameter berupa array alias
daftar
nilai sheet1 yang bertipe teks alias berbunyi lengkap "Sheet1" menjadi
nilai parameter ke-1 bagi fungsi Array
begitu pula untuk nilai sheet2, sheet4, dan sheet5.
Regards,
Kid.
2015-02-18 13:42 GMT+11:00 hendrik karnadi [email protected]
[belajar-excel] <[email protected]>:
>
>
> Dear be-Exceler,
>
> Beberapa waktu yang lalu pernah ada pertanyaan:
> "Bagaimana memilih beberapa sheet sekaligus kecuali satu sheet tertentu
> dengan macro".
> Untuk contoh kasus saya buat lima sheets dimana satu sheet tertentu tsb
> bernama "TES" sebagai ganti Sheet3
>
> Jika digunakan rekaman (macro recording) maka codenya seperti ini:
> Sheets(Array("Sheet1", "Sheet2", "Sheet4", "Sheet5")).Select
>
> Karena jumlah sheet bisa banyak maka saya buat macro seperti ini:
> Sub All_x_Tes()
> Dim sh As Worksheet
> Dim shNames As Variant
> For Each sh In ThisWorkbook.Worksheets
> If sh.Name <> "TES" Then
> shNames = shNames & sh.Name & """, """
> End If
> Next
> shNames = Left(shNames, Len(shNames) - 4)
> Sheets(Array(shNames)).Select
> End Sub
>
> *Ketika saya jalankan keluar message :*
> *Run-time error '9':*
> *Subscript out of range*
>
> Ketika saya debug maka code ini diberi warna kuning:
> Sheets(Array(shNames)).Select
>
> Jika disorot warna kuningnya maka akan tampak
> shNames = "Sheet1", "Sheet2", "Sheet4", "Sheet5"
> sehingga kalau digabung menjadi:
> Sheets(Array("Sheet1", "Sheet2", "Sheet4", "Sheet5")).Select
>
> Pertanyaannya (bukan quiz):
> Dimana salahnya ?
>
> Terima kasih.
>
> Salam,
> HK
>
>
>
>
>
>
>
>
>
>
>