Jika 1 kolom mewakili 1 Pekan (Week), sebetulnya penggambaran Pak EKO mengenai BULAN dan WEEK itu sulit dipraktekkan; karena
** Week Selalu Dimulai pada Hari Minggu (atau bisa diatur agar Week dimulainya Hari Senin)
** Sedangkan Tgl Satu (awal setiap bulan) bisa jatuh pada hari apa saja
Jadi bisa saja misalnya Week#12 mengandung dua Nama bulan
2 hari pertama = Week 12 masih berada di bulan Maret
5 hari berikutnya berada di bulan April
Bagaimana cara pak eko merepresentasikan dengan 1 kotak = 1 week??
Harus ada nilai yg dikalahkan; misalnya (untuk permisalan di atas: Awal April = Week#13
(karena Week#12 sudah dipakai dlm kolom di bulan Maret.)
Mudah mudahan seperti itu yg dikehendaki oleh pak Eko...
Workbook terlampir berusaha memenuhi keinginan pak Eko
1.
Menggenerate daftar WEEK ditulis dlm satu baris (sekitar 53 kolom), yaitu
banyaknya Week dalam kurun satu tahun (di mana TAHUNNYA ditentukan melalui
sebuah cell yg nilainya dapat diganti-ganti)
2.
Melengkapi daftar tsb dengan nama bulan di baris atasnya
3.
Setiap Nama BULAN yg SAMA; cellsnya di merge (digabung menjadi seperti satu cell).
Semua dilakukan dengan makro tanpa tabel bantu
Tabel yg berada di sheet lain, bukan sebagai tabel bantu, tetapi tabel yg dibuat dengan
formula yg hanya ingin menunjukkan bahwa AWAL BULAN tidak harus selalu
BERSAMAAN dengan AWAL Pekan (awal Week), silakan dihapus jika tidk ada manfaatnya...
-hapsari-
'----vba code ditulis di modul standar----
Sub WeekMonthBox(Tahun As Integer, Rng1 As Range)
' generate Daftar Bulan & WeekNum Tahun tertentu
' Hapsari, Oct 2011
'-----------------------------------------------
Dim n As Long, WeekN As Integer
Dim Jan1 As Date, Dec31 As Date
If Tahun < 1900 Then Tahun = 1900
Jan1 = DateSerial(Tahun, 1, 1)
Dec31 = DateSerial(Tahun, 12, 31)
With Rng1.Resize(2, 55)
.MergeCells = False
.Clear
.Orientation = 90
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
With WorksheetFunction
For n = CLng(Jan1) To CLng(Dec31)
If Not .WeekNum(CDate(n)) = .WeekNum(CDate(n - 1)) Then
WeekN = WeekN + 1
Rng1(1, WeekN) = Format(CDate(n), "MMMM")
Rng1(1, WeekN).BorderAround ColorIndex:=5, Weight:=xlThin
Rng1(2, WeekN) = WeekN
Rng1(2, WeekN).BorderAround ColorIndex:=5, Weight:=xlThin
End If
Next
End With
Call ctv_MonthBoxMerge(Rng1.Resize(2, WeekN))
'-------------------------------------------------
2011/10/27 Eko Wahyudi
<xo_wahyoedy@yahoo.co.id>
Mungkin saya kurang lengkap menyampaikan permasalahan saya.
Tujuan saya menggunakan macro/vba adalah sebagai berikut :
Berbeda tahun weeknum-nya berbeda-beda saya ingin setiap
merubah tahun langsung merge kolom-nya juga mengikuti,
(lebih jelasnya bisa view di attachment)
Terimakasih atas perhatian, bantuan solusinya.
Salam
Eko
kepada: ysh. Pak Eko Wahyudi (thread-maker) dimohon jangan merasa terganggu
karena posting ini tidak saya tujukan kepada anda, melainkan untuk keperluan
pembelajaran makro/vba excel bagi members yg sedang mulai ber-makro-ria
Coding yg sudah ada itu masih dapat di ringkas sbb
-----------------------------cut--------------------------------
Nenhum comentário:
Postar um comentário