Sepertinya ingin sort area range a4:d15 dengan kolom kunci sort adalah
kolom pertama (kolom A terpilih).
Coba perhatikan struktur methods sort milik object range :
*expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header,
OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2,
DataOption3)*
expression bisa diganti dengan object range, baik dalam sebuah variabel
ataupun disebut secara langsung.
key1 sampai key3 bisa diisi salah satu range yang menjadi kunci
order1 sampai order3 dipilih xlascending atau xldescending tergantung
kebutuhan setiap key-nya
header dipilih xlyes kalau ada baris header dalam expression dan xlno kalau
tanpa baris header
orientation dipilih xlsortcolumns jika akan sort data per kolom
(baris-baris record hasil sort akan berubah letaknya). isi atau pilih
xlsortrows jika akan sort per baris (kolom-kolom tabel hasil sort akan
berubah letaknya)
[script1]
untuk kasus diatas, baris script-nya :
range("a4:d15").sort range("a4") , xlascending , header:=xlyes,
orientation:=xlsortcolumn
[script2]
jika range("a4:d15") disimpan dalam variabel range seperti variabel bernama
rngData, maka bentuknya menjadi :
dim rngData as range
set rngData=range("a4:d15")
*rngdata*.sort *rngdata.resize(1,1)* , xlascending , header:=xlyes,
orientation:=xlsortcolumn
script1 dan script2 bersifat statis. jika data berubah jumlah recordnya,
bisa jadi tidak semua record akan ter-sort. Dengan mengubah bentuk scipt1
menjadi bentuk script2, maka ada potensi untuk dikembangkan menjadi dinamis
mengikuti jumlah record data. Bagian yang perlu didinamiskan adalag script2
baris pendefinisi range yang akan di-sort, yaitu yang berbunyi :
set rngData=range("a4:d15")
Coba pelajari cara mendefinisikan range dari yang statis sampai dinamis
mulai dari
sini<http://b-excel.blogspot.com/2013/09/belajarvba-011-range-01-berdasar-alamat.html>sampai
bagian yang ada
disini<http://b-excel.blogspot.com/2013/09/belajarvba-011-range-06-range-ke-range.html>
.
Wassalam,
Kid.
2014-01-30 hendrik karnadi <[email protected]>:
>
>
> Hai Akbar,
> Coba bandingkan macro yang anda buat (macro1) dengan macro yang saya dapat
> melalui rekaman (macro2) berikut ini:
> Sub Macro1()
> ActiveWorkbook.Worksheets("DATABASE").AutoFilter.Sort.SortFields.Clear
> ActiveWorkbook.Worksheets("DATABASE").AutoFilter.Sort.SortFields.Add
> Key:= _
> Range("A4:A58"), SortOn:=xlSortOnValues, Order:=xlAscending,
> DataOption:= _
> xlSortNormal
> With ActiveWorkbook.Worksheets("DATABASE").AutoFilter.Sort
> .Header = xlYes
> .MatchCase = False
> .Orientation = xlTopToBottom
> .SortMethod = xlPinYin
> .Apply
> End With
> End Sub
>
> Sub Macro2()
> ActiveWorkbook.Worksheets("DATABASE").Sort.SortFields.Clear
> ActiveWorkbook.Worksheets("DATABASE").Sort.SortFields.Add Key:=Range("
> A4:A15" _
> ), SortOn:=xlSortOnValues, Order:=xlAscending,
> DataOption:=xlSortNormal 'Macro1() A4:A58
> With ActiveWorkbook.Worksheets("DATABASE").Sort
> .SetRange Range("A3:D15") 'Macro1() tidak ada
> .Header = xlYes
> .MatchCase = False
> .Orientation = xlTopToBottom
> .SortMethod = xlPinYin
> .Apply
> End With
> End Sub
>
> File tidak dilampirkan agar anda bisa mencobanya sendiri.
>
> Salam,
> HK
>
>
> On Thursday, 30 January 2014, 21:39, "[email protected]" <
> [email protected]> wrote:
>
> Kepada para master
>
> saya mohon pencerahannya untuk kode macro dlm sorting data
> saya sudah coba buat code macro untuk menjalankan SORT data,
> tapi blm bisa untuk mejalankan fitur Sort Expand the Selection (seperti
> sorting manual)
> saya lampirkan file contoh
>
> mohon bantuannya untuk Kode macro
> terima kasih atas bantuannya
>
> Akbar
>
>
>
>
>