sembunyikan baris dan kolom dari banyak kriteria

  1. 6 tahun lalu

    Assalamualaikum...sebenarnya pertanyaan ini pernah saya utarakan namun hanya dari satu kriteria dan kali ini saya tanyakan jika perintahnya dari banyak kriteria karena file terlampir ini akan mewakili garis2 besar dari aplikasi yang ingin saya buat jadi kepada segenap master excel diforum ini apabila memungkinkan bisa saya mohon bantuannya

  2. Caton

    19 Agu 2018 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 6 tahun lalu oleh Caton

    Wa'alaikumsalam Mas @Farud ...

    Terlampir contoh script dari saya. Klo ada yang tidak sesuai, coba dimodifikasi dahulu sendiri. Kalau memang udah kuldesak , silahkan didiskusikan ... :D

  3. untuk menyembunyikan kolom dan baris alhamdulillah sudah bisa mas @Caton cuma yg penambahan muatan lokalnya saja yang masih belum tereksekusi dengan baik. ketika tidak ada penambahan muatan lokalnya memang tersembunyi tapi ketika saya coba tambah satu muatan lokal muncul notifikasi dimana baris 40:41 akan termerger bila ditambah satu muatan lokal jika menambah satu muatan lokal lagi yang termerger dari baris 40:42
    mau dimodifikasi sendiri tambah bingung mas...klo VBA saya nol besar jadi bila bisa saya mohon bantuannya

  4. Caton

    19 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    @farud ... ketika saya coba tambah satu muatan lokal muncul notifikasi dimana baris 40:41 akan termerger bila ditambah satu muatan lokal jika menambah satu muatan lokal lagi yang termerger dari baris 40:42 ...

    Terlampir revisinya.

  5. Alhamdulillah sudah bisa mas...cuma ada sedikit masalah yang menyembunyikan sheet, ketika dipilih kelas 1 atau 2 maka otomatis mapel SKI,IPA,IPS tersembunyi tapi ketika langsung pilih kelas 7,8 atau 9 baris yg tersembunyi tetap tidak muncul mas tetapi klo dipilih kelas 3 s/d 6 baru bisa keluar saya sudah coba otak-atik sendiri gak bisa -bisa mas..maklum cuma pakai feeling
    yg saya ingin itu jika dipilih kelas 1 & 2 yg terssembunyi itu mapel SKI,IPS,IPA & B.Inggris
    jika dipilih kelas 3 s/d 6 yg tersembunyi cuma B.Inggris sedang IPA,IPS,SKI muncul
    jika yg dipilih kelas 7 s/d 9 tidak ada mapel yg tersembunyi
    atas bantuan mas @Caton dan master yg lain saya sampaikan terimakasih

  6. Caton

    19 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    @farud ... cuma ada sedikit masalah yang menyembunyikan sheet, ketika dipilih kelas 1 atau 2 maka otomatis mapel SKI,IPA,IPS tersembunyi tapi ketika langsung pilih kelas 7,8 atau 9 baris yg tersembunyi tetap tidak muncul mas tetapi klo dipilih kelas 3 s/d 6 baru bisa keluar ...

    Terlampir revisinya.

  7. Alhamdulillah sudah bisa mas @caton...terimakasih banyak dan maaf telah merepotkan mas @Caton hanya doa semoga mas caton panjang umur,banyak rejeki dan semoga ilmunya barokah.aamiinn....

  8. Caton

    19 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    @farud ... Alhamdulillah sudah bisa ...

    Alhamdulillah ...

    @farud ... maaf telah merepotkan ...

    Tidak masalah mas. Jika bisa saya bantu, saya bantu. Jika tidak bisa, saya pun mohon makulm.

    @farud ... semoga mas caton panjang umur,banyak rejeki dan semoga ilmunya barokah ...

    Allahumma Aamiin. Semoga kebaikan dan keberkahan semisal juga untuk mas @Farud. Aamiin.

  9. @Caton Alhamdulillah ...

    Tidak masalah mas. Jika bisa saya bantu, saya bantu. Jika tidak bisa, saya pun mohon makulm.

    Allahumma Aamiin. Semoga kebaikan dan keberkahan semisal juga untuk mas @Farud. Aamiin.

    mas.. bisa bantu jawab pertanyaan saya....

  10. Assalamualaikum mas @Caton dan master2 excel yang lain...ada pertanyaan lanjutan tentang sembunyikan kolom/baris dan untuk lebih jelasnya file terlampir
    mohon solusinya

  11. Caton

    29 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    Wa'alaikumsalam mas @Farud ...

    Terlampir perbaikan dari masalah yang ditanyakan. Mudah-mudahan sesuai. Maaf jika responnya lambat, saya lagi ada kesibukan ... :)

  12. Alhamdulillah sudah bisa mas @Caton...terimakasih banyak dan semoga Allah selalu melindungi mas @Caton dan selalu diberikan kesehatan.aamiinn...

  13. mohon maaf mas @Caton ...srript VBA yg mas caton berikan ketika diletakkan dan diterapkan dalam file yang saya buat kok tidak bisa jalan ya mas padahal scriptnya tidak saya ubah.file terlampir..
    maaf lagi2 merepotkan

  14. tapi ketika saya coba masukkan ke file lain atau buat baru kok bisa jalan..sedangkan ke file saya itu tidak bisa

  15. Caton

    4 Sep 2018 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 6 tahun lalu oleh Caton

    @farud ... ketika diletakkan dan diterapkan dalam file yang saya buat kok tidak bisa jalan ...

    [1]. Masalah pertama ada pada korelasi antara sel target aktual dengan scriptnya:

    s02.png

    Solusinya, sisipkan satu baris pada baris ke-1 pada sheet INDUK2 tersebut, atau ubah scriptnya menjadi sebagai berikut (sekalian saya berikan revisinya):

    Public Sub CheckMaxIndex(Validate As Boolean)
        If ([AL1] = [AL2] - 1) Or Validate Then
            Dim xlShape As Shape
            Dim lRow As Long
            
            On Error Resume Next
            
            Set xlShape = Me.Shapes("spnIndex")
            With xlShape.ControlFormat
                If ([AL2] * 1) Then
                    .Max = [AL2]
                Else
                    lRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
                    .Max = lRow
                End If
            End With
            
            Err.Clear
            On Error GoTo 0
        End If
    End Sub

    [2]. Masalah kedua adalah pada sheet DATABASE kolom A terdapat Non Blank Cells, yakni pada range A12:A53. Solusinya, hapus formula pada range yang belum terpakai (kosong) tersebut, atau modifikasi kembali script pada poin ke-1 di atas menjadi:

    Public Sub CheckMaxIndex(Validate As Boolean)
        If ([AL1] = [AL2] - 1) Or Validate Then
            Dim xlShape As Shape
            Dim lRow As Long
            
            On Error Resume Next
            
            Set xlShape = Me.Shapes("spnIndex")
            With xlShape.ControlFormat
                If ([AL2] * 1) Then
                    .Max = [AL2]
                Else
                    'lRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
                    lRow = Application.CountIf(Sheet2.Range("A4:A1000"), ">0")
                    If lRow = 0 Then
                        lRow = Application.CountIf(Sheet2.Range("A4:A1000"), "?*")
                    End If
                    .Max = IIf(lRow > 0, lRow, 100)
                End If
            End With
            
            Err.Clear
            On Error GoTo 0
        End If
    End Sub

    Demikian.

  16. terimakasih pencerahannya mas @Caton...biar saya pelajari dulu mas sekali lagi terimakasih

  17. maaf mas @Caton...saya sudah gunakan dua cara yg diberikan mas caton...yg pertama

    Solusinya, sisipkan satu baris pada baris ke-1 pada sheet INDUK2 tersebut

    dan juga

    Solusinya, hapus formula pada range yang belum terpakai (kosong) tersebut

    dan yang kedua saya coba ke file lain pakai scriptnya yang diatas

    Public Sub CheckMaxIndex(Validate As Boolean)
    If ([AL1] = [AL2] - 1) Or Validate Then
    Dim xlShape As Shape
    Dim lRow As Long

    On Error Resume Next

    Set xlShape = Me.Shapes("spnIndex")
    With xlShape.ControlFormat
    If ([AL2] * 1) Then
    .Max = [AL2]
    Else
    'lRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
    lRow = Application.CountIf(Sheet2.Range("A4:A1000"), ">0")
    If lRow = 0 Then
    lRow = Application.CountIf(Sheet2.Range("A4:A1000"), "?*")
    End If
    .Max = IIf(lRow > 0, lRow, 100)
    End If
    End With

    Err.Clear
    On Error GoTo 0
    End If
    End Sub

    untuk ke sheet induk2 tidak ada masalah tapi tetap saja script yg di sheet1 (sekolah) dibawah ini

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [E20:E21]) Is Nothing Then
    Dim lIdx As Long
    Dim xAddr

    On Error Resume Next

    Application.ScreenUpdating = False

    If Target.Address = [E20].Address Then
    lIdx = Application.Match(Val(Target), [{1, 2, 3, 4, 5, 6, 7, 8 , 9}], 0)
    Else
    lIdx = Val([E20])
    End If

    If Err.Number = 0 Then
    '+-- Sheet Kompetensi Dasar (KD).
    With Sheet17
    xAddr = [{"A:R", "S:AJ", "AK:BD", "BE:CB", "CC:CZ", "DA:DX", "DY:EU", "EV:FR", "FS:GO"}]
    .Columns("A:GO").Hidden = True
    .Columns(xAddr(lIdx)).Hidden = False
    End With
    '+-- Sheet Raport.
    With Sheet8
    '+-- Sembunyikan baris!
    .Rows(27).Hidden = IIf(lIdx < 3, True, False) '+-- SKI
    .Rows(35).Hidden = IIf(lIdx < 3, True, False) '+-- IPA
    .Rows(36).Hidden = IIf(lIdx < 3, True, False) '+-- IPS
    .Rows(38).Hidden = IIf(lIdx < 7, True, False) '+-- Bahasa Inggris
    '+-- Tinggi baris!
    .Rows(26).RowHeight = IIf(lIdx < 3, 165, 87.75)
    .Rows(32).RowHeight = IIf(lIdx < 3, 165, 87.75)
    .Rows(33).RowHeight = IIf(lIdx < 3, 165, 87.75)
    .Rows(37).RowHeight = IIf(lIdx < 7, 165, 87.75)
    End With

    '+-- Hide beberapa kolom sekaligus!
    If InStr(1, "GANJIL|GENAP", UCase$([E21])) > 0 Then
    With Sheet5
    '+-- Kolom semester!
    .Columns("A:BR").Hidden = False
    .Columns("B:AI").Hidden = (UCase$([E21]) = "GENAP")
    .Columns("AJ:BQ").Hidden = (UCase$([E21]) = "GANJIL")

    '+-- Kolom per kelas per semester!
    .Range("H:H, L:M, X:X, AB:AC").EntireColumn.Hidden = (lIdx < 3) '+-- Ganjil.
    .Range("AP:AP, AT:AU, BF:BF, BJ:BK").EntireColumn.Hidden = (lIdx < 3) '+-- Genap.

    .Range("P:P, AF:AF, AX:AX, BN:BN").EntireColumn.Hidden = (lIdx < 7)

    .Activate
    .Range(IIf(UCase$([E21]) = "GANJIL", "C10", "AK10")).Activate
    End With
    End If
    Me.Activate
    End If

    Application.ScreenUpdating = True

    Err.Clear
    On Error GoTo 0

    End If
    End Sub

    tidak bisa jalan ke sheet yang ditargetkan dalam hal ini sheet5 dan sheet8.. mohon solusinya mas @caton

  18. Caton

    4 Sep 2018 Terverifikasi Indonesia + 20.101 Poin

    @farud ... tidak bisa jalan ke sheet yang ditargetkan dalam hal ini sheet5 dan sheet8 ...

    Okelah. Kita revisi scriptnya. Buka modul objek Sheet1, dan temukan baris script berikut:

    ...
    '+-- Hide beberapa kolom sekaligus!
    If InStr(1, "GANJIL|GENAP", UCase$([E21])) > 0 Then
       With Sheet5
          '+-- Kolom semester!
          .Columns("A:BR").Hidden = False
          .Columns("B:AI").Hidden = (UCase$([E21]) = "GENAP")
          .Columns("AJ:BQ").Hidden = (UCase$([E21]) = "GANJIL")
    		
          '+-- Kolom per kelas per semester!
          .Range("H:H, L:M, X:X, AB:AC").EntireColumn.Hidden = (lIdx < 3)
          .Range("AP:AP, AT:AU, BF:BF, BJ:BK").EntireColumn.Hidden = (lIdx < 3)
          .Range("P:P, AF:AF, AX:AX, BN:BN").EntireColumn.Hidden = (lIdx < 7)
    		
          .Activate
          .Range(IIf(UCase$([E21]) = "GANJIL", "C10", "AK10")).Activate
       End With
    End If
    Me.Activate
    ...

    Lalu ubah scriptnya menjadi sebagai berikut:

    ...
    '+-- Hide beberapa kolom sekaligus!
    If InStr(1, "GANJIL|GENAP", UCase$([E21])) > 0 Then
       With Sheet5
          '+-- Kolom semester!
          .Columns("A:BR").Hidden = False
          .Columns("B:AI").Hidden = (UCase$([E21]) = "GENAP")
          .Columns("AJ:BQ").Hidden = (UCase$([E21]) = "GANJIL")
                        
          '+-- Kolom per kelas per semester!
          If (UCase$([E21]) = "GANJIL") Then
             '+-- Kelas < 3, Semeter Ganjil
             .Range("H:H, L:M, X:X, AB:AC").EntireColumn.Hidden = (lIdx < 3)
             .Range("P:P, AF:AF").EntireColumn.Hidden = (lIdx < 7)
          Else
             '+-- Kelas < 3, Semeter Genap.
             .Range("AP:AP, AT:AU, BF:BF, BJ:BK").EntireColumn.Hidden = (lIdx < 3)
             .Range("AX:AX, BN:BN").EntireColumn.Hidden = (lIdx < 7)
          End If
          .Activate
          .Range(IIf(UCase$([E21]) = "GANJIL", "C10", "AK10")).Activate
       End With
    End If
    Me.Activate
    ...

    Demikian, semoga sesuai.

  19. Di sunting 6 tahun lalu oleh manweljs_

    mas @Caton

    bedanya kedua skrip tersebut apa ya? bisa tolong dijelaskan :)

    @farud saya gak ngerti soal penilaian di sekolah, namun makin kesini saya lihat aplikasinya makin mirip yang dari kabupaten yang pernah di bagikan oleh mas @farud (^_^)/

  20. Caton

    4 Sep 2018 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 6 tahun lalu oleh Caton

    @manweljs_ ... bedanya kedua skrip tersebut apa ya ...

    Masalah yang ditanyakan oleh mas @farud ada diblok script tersebut. Perbedaan pada script yang terlampir di sini hanyalah pada blok kondisional (blok IF) untuk memeriksa range kolom semester yang akan ditampilkan. Poin masalahnya:

    [1]. Blok kolom data sudah ditampilkan atau disembunyikan berdasarkan semester pada script:

    ...
    '+-- Kolom semester!
    .Columns("A:BR").Hidden = False
    .Columns("B:AI").Hidden = (UCase$([E21]) = "GENAP")
    .Columns("AJ:BQ").Hidden = (UCase$([E21]) = "GANJIL")
    ...

    [2]. Saat menguji mata pelajaran mana yang akan ditampilkan atau disembunyikan berdasarkan kelas yang dipilih yakni pada baris script:

    ...
    '+-- Kolom per kelas per semester!
    .Range("H:H, L:M, X:X, AB:AC").EntireColumn.Hidden = (lIdx < 3)
    .Range("AP:AP, AT:AU, BF:BF, BJ:BK").EntireColumn.Hidden = (lIdx < 3)
    .Range("P:P, AF:AF, AX:AX, BN:BN").EntireColumn.Hidden = (lIdx < 7)
    ...

    range yang harusnya tidak ditampilkan lagi (oleh karena semesternya berbeda) masih ikut ditampilkan jika kriteria kelasnya memenuhi kondisi. Contohnya, jika yang dipilih adalah kelas 2 dan semester yang dipilih adalah GANJIL, maka script berikut:

    ...
    .Range("AP:AP, AT:AU, BF:BF, BJ:BK").EntireColumn.Hidden = (lIdx < 3)
    ...

    akan tetap ditampilkan oleh karena kondisi kriterianya terpenuhi. Namun masalahnya, script tersebut diperuntukkan untuk blok semester GENAP. Oleh karena itu ditambahkan script untuk memeriksa pada blok semester mana kolom yang akan disembunyikan.

    Demikian, semoga gak kena virus lagi ...

  21. Newer ›
 

atau Mendaftar untuk ikut berdiskusi!