Tambah Kolom Kekanan + rumus Berulang

  1. 3 tahun lalu

    Pagi ,.
    Mohon bantuannya Master/Suhu BEO ,.

    1.Saya membuat insert Kolom dengan jumlah yang ditentukan + beserta headernya secara kekanan ,. ( berjalan )
    2.tapi hasil jadi tidak sesuai ketika saya menambah kolom baru ( DATA UPDATE ) disebalah kanan , saat saya jalankan macronya kolom baru saya tertumpuk

    a. apa yang ditambabkan agar script saat dijalankan ( point 1 ) data kolom yang baru tidak tertumpuk ?
    b. script apa yg digunakan untuk kolom baru ( DATA UPDATE ) terisi data yang terbaru ( berdasakan data bulan terakhir )

    Terima Kasih

  2. Caton

    21 Agu 2021 Terverifikasi Indonesia + 20.101 Poin

    Mas @Chris212 ...

    Untuk pertanyaan,

    apa yang ditambabkan agar script saat dijalankan ( point 1 ) data kolom yang baru tidak tertumpuk

    coba script dalam Module1 diganti menjadi seperti berikut ini:

    Option Explicit
    
    Private Const MONTHS_NAME As String = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC"
    
    Public Sub InsertMonthTable()
        Dim lRow As Long, lCol As Long, lIdx As Long
        Dim vMonth As Variant
        Dim sAddr As String
        
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        
        '+-- Nama blok bulan.
        vMonth = Split(MONTHS_NAME, ",")
        
        With Sheet1
            .Activate
            
            '+---------------------------------------------------
            ' 1. Sisipkan blok bulan yang baru
            '+---------------------------------------------------
            
            '+-- Dapatkan kolom blok bulan terakhir.
            sAddr = Split(.Range("F1").CurrentRegion.Address, ":")(1)
            lCol = .Range(sAddr).Column + 1
            
            .Range("F:L").Copy  '+-- Salin dari blok pertama.
            '+-- Tempel blok bulan yang baru setelah blok terakhir.
            .Columns(lCol).EntireColumn.Insert Shift:=xlToRight
            '+-- Bersihkan area blok bulan yang baru.
            .Cells(3, lCol).Resize(200, 7).ClearContents
            
            '+-- Hitung indeks blok bulan terakhir.
            lIdx = .Range(Cells(1, "F"), Cells(1, lCol - 1)).Columns.Count \ 7
            If lIdx > 12 Then lIdx = 1
            
            '+-- Isi nama blok bulan terakhir.
            .Cells(1, lCol).Value2 = vMonth(lIdx)
        
            '+---------------------------------------------------
            ' 2. Definisi ulang nama range rgBulanBerjalan
            '+---------------------------------------------------
            
            lRow = 3
        
            '+-- Dapatkan kolom blok bulan terakhir.
            sAddr = Split(.Range("F1").CurrentRegion.Address, ":")(1)
            lCol = (.Range(sAddr).Column - 7) + 1
        
            '+-- Buat alamat range blok bulan terakhir.
            sAddr = .Cells(lRow, lCol).Resize(105, 7).Address
            sAddr = "='" & Sheet1.Name & "'!" & sAddr
            
            '+-- Simpan alamat range blok bulan terakhir ke Named Range.
            ThisWorkbook.Names("rgBulanBerjalan").RefersTo = sAddr
        End With
            
        Application.CutCopyMode = False
        Application.EnableEvents = True
        Application.ScreenUpdating = True
        
    End Sub

    Karena saat ini saya harus ke lapangan, untuk pertanyaan kedua, nanti saya update kembali. Pada script di atas, ada nama range rgBulanBerjalan yang nanti digunakan untuk proses update nilai sesuai pertanyaan kedua (mungkin bisa menggunakan formula atau via VBA). Jangan lupa, sebelum mengeksekusi script di atas, nama range range tersebut sudah ada duluan (lihat contoh file terlampir).

    Demikian.

  3. Mas @Caton
    Siap ,.

    Sambil menunggu untuk yang ke-2 :D ( hehehehe )
    maaf mas saya bertanya lagi ,.
    saya masih bingung dibagian ini

    lIdx = .Range(Cells(1, "F"), Cells(1, lCol - 1)).Columns.Count \ 7
            If lIdx > 12 Then lIdx = 1


    untuk \ apa ya mas ? , angka 7 saya pahamnya itu jumlah kolom ( Date Service - Description )

    Tapi saat sudah sampai bulan DEC dan add lagi maka muncul bulan JAN , tapi saat add lagi muncul error " Subscript out of range " ,. ( saya End )
    kemudian saya klil add lagi script berlanjut ( normal ) hanya error setiap JAN ke FEB setelah DEC ,.

    Sebelumnya Terima kasih mas @Caton

  4. Caton

    23 Agu 2021 Terverifikasi Indonesia + 20.101 Poin

    Mas @Chris212 ...

    Untuk pertanyaan:

    ... tapi saat add lagi muncul error "Subscript out of range" ...

    coba temukan baris berikut :

    image_2021-08-23_160310.png

    kemudian ganti menjadi :

    If lIdx >= 12 Then lIdx = 0

    Untuk pertanyaan :

    ... untuk \ apa ya ...

    Notasi \ sama dengan fungsi INT :

    13 / 7 = 1,85714285714286
    13 \ 7 = 1
    INT(13 / 7) = 1

    Demikian.

 

atau Mendaftar untuk ikut berdiskusi!