hehehe...

bukan penulisan tipe data yang selip Pak.
Array() menghasilkan suatu daftar
dim variabel as string menghasilkan wadah sebuah nilai

variabel="""sheet1"",""sheet2"",""sheet4"",""sheet5"""
menghasilkan sebuah nilai bertipe string alias teks berbunyi
"sheet1","sheet2","sheet4","sheet5"

gini saja,
coba buat prosedur berisi code 4 baris berbunyi seperti dibawah ini dan
di-run, lalu lihat di sheets ke-1 dalam workbook tersebut

sheets(1).cells.clear

sheets(1).range("a1:d1").value=array( "sheet1" , "sheet2" , "sheet4" ,
"sheet5" )   'ada 4 item dimasukkan ke fungsi array dan ditulis di 4 cells

sheets(1).range("a7:d7").value=array( "
""sheet1"",""sheet2"",""sheet4"",""sheet5""" ) 'ada 1 item dimasukkan ke
fungsi array dan ditulis di 4 cells

sheets(1).range("a:d").entirecolumn.autofit



Jadi,
baris berbunyi :
    shNames = shNames & sh.Name & """"", """""
tidak akan pernah menghasilkan nilai yang sama dengan bunyi
    "sheet1" , "sheet2" , "sheet4" , "sheet5"
yang dimasukkan dalam fungsi array, karena
bunyi hasil :
   shNames = shNames & sh.Name & """"", """""
selalu hanya 1 bijik nilai
sedangkan bunyi :
    "sheet1" , "sheet2" , "sheet4" , "sheet5"
dalam fungsi array yang lengkapnya menjadi :
    array( "sheet1" , "sheet2" , "sheet4" , "sheet5" )
terdiri dari 4 nilai yang disusun sebagai sebuah daftar.

Bukankah bunyi
Sheet1
Sheet2
Sheet4
Sheet5
sebagai daftar seperti diatas akan berbeda dengan bunyi sebuah teks dalam
sebuah cell yang tulisannya begini :
"sheet1" , "sheet2" , "sheet4" , "sheet5"

Kalau memang mau menggunakan proses loop tersebut, jadinya seperti ini :
Sub All_x_Tes()
    Dim sh As Worksheet
    Dim shNames As *Variant* 'harus variant agar bisa menyimpan data array
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "TES" Then
           If shNames = "" Then shNames = """"""
           shNames = shNames & sh.Name & """"", """""
        End If
    Next
    shNames = Left(shNames, Len(shNames) - 4)
    shNames=split( shNames , "," )
    Sheets( shNames ).Select 'gak pakai fungsi array lagi karena arraynya
dibentuk oleh fungsi split
End Sub

variabel shNames di baris berbunyi :
    shNames = shNames & sh.Name & """"", """""
dan
    shNames = Left(shNames, Len(shNames) - 4)
bertipe string (dari tipe variant diubah menjadi string oleh VB)
kemudian variabel shNames di baris :
    shNames=split( shNames , "," )
adalah berupa array alias daftar alias list yang berisi minimal 1 item
dengan tipe data setiap item dalam kasus ini adalah string

Regards,
Kid.




2015-02-18 15:47 GMT+11:00 hendrik karnadi [email protected]
[belajar-excel] <[email protected]>:

>
>
> Terima kasih Mr. Kid atas penjelasannya.
>
> Penulisan type data inilah yang kadang2 masih selip...
> Saya coba seperti ini ternyata masih error,
> Sub All_x_Tes()
>     Dim sh As Worksheet
>     Dim shNames As Variant
>     For Each sh In ThisWorkbook.Worksheets
>         If sh.Name <> "TES" Then
>            If shNames = "" Then shNames = """"""
>            shNames = shNames & sh.Name & """"", """""
>         End If
>     Next
>     shNames = Left(shNames, Len(shNames) - 4)
>     Sheets(Array(shNames)).Select 'masih error
> End Sub
>
> Mohon petunjuk lebih lanjut mengenai teknis penulisannya.
> Terima kasih.
>
> Salam,
> HK
>
>
>   ------------------------------
>  *From:* "'Mr. Kid' [email protected] [belajar-excel]" <
> [email protected]>
> *To:* BeExcel <[email protected]>
> *Sent:* Wednesday, 18 February 2015, 9:56
> *Subject:* Re: [belajar-excel] Memilih sheets sekaligus kecuali sheet TES
>
>
>  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
>
>
>
>
>
>
>
>
>
>
>
>
>   
>

Kirim email ke