Cara Efektif Membuat Jadwal Pelajaran Anti Bentrok dengan Bantuan VBA

oleh | 24 Apr 2025 | VBA Macro | 0 Komentar

Membuat jadwal pelajaran untuk sekolah memang terlihat seperti tugas rutin, tetapi dalam praktiknya sangat kompleks, terutama jika harus melibatkan banyak guru, kelas, dan mata pelajaran. Bentrokan jadwal menjadi masalah umum yang sering ditemui. Maka dari itu, kemampuan membuat jadwal pelajaran anti bentrok adalah hal yang sangat dibutuhkan.

Dalam artikel ini, Anda akan belajar bagaimana membuat jadwal pelajaran anti bentrok dengan menggunakan Excel dan bantuan kode VBA yang akan mengecek otomatis apakah ada tabrakan jadwal dalam satu baris dan memastikan kuota mengajar guru tidak terlampaui.

Mengapa Perlu Jadwal yang Anti Bentrok?

Beberapa alasan kenapa penting sekali membuat jadwal pelajaran anti bentrok:

  • Guru bisa mengajar di banyak kelas, sehingga mudah terjadi bentrokan waktu.
  • Ruang kelas atau laboratorium bisa double-booked jika tidak dicek otomatis.
  • Proses manual rawan kesalahan, memakan waktu, dan sulit diperiksa ulang.
  • Tidak semua guru atau mata pelajaran memiliki jumlah jam yang sama.

Oleh karena itu, diperlukan solusi pintar dan efisien untuk membuat jadwal pelajaran anti bentrok.

Mengapa Jadwal Pelajaran Sering Bentrok?

Bentrokan jadwal biasanya terjadi karena:

  • Guru mengajar di lebih dari satu kelas.
  • Ruang laboratorium atau fasilitas khusus digunakan secara bersamaan.
  • Tidak ada sistem yang memverifikasi kesamaan kode atau waktu pelajaran saat pengisian jadwal.
  • Penjadwalan masih dilakukan secara manual tanpa sistem kontrol otomatis.

Oleh karena itu, solusi terbaik adalah dengan membuat jadwal pelajaran anti bentrok menggunakan bantuan rumus dan script Excel yang bisa langsung memberi peringatan jika terjadi tumpang tindih atau pelanggaran kuota mata pelajaran atau guru.

Baca Juga  Menghitung Persentase Distribusi Nilai Siswa Otomatis Menggunakan UDF di Excel

Struktur Excel untuk Penjadwalan

Dalam tutorial ini, kita asumsikan struktur Excel seperti berikut:

  • Input kode pelajaran/guru berada di kolom E sampai J, baris 12 hingga 100.
  • Daftar referensi kode pelajaran dan kuota jam berada di kolom O (kode Guru), P dst (kuota masing-masing kolom E-J).

Contohnya:

  • Kolom O2:O100 berisi daftar kode seperti “03A”, “04A”, dsb.
  • Kolom P2:U100 berisi kuota maksimal untuk masing-masing slot pelajaran dalam satu minggu.

Berikut penampakannya dalam sheet Excel:

Template membuat jadwal pelajaran anti bentrok

Kode VBA untuk Validasi Anti Bentrok

Berikut kode lengkap VBA untuk membuat jadwal pelajaran anti bentrok secara otomatis:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngInput As Range
    Dim cell As Range
    Dim rowNum As Long, colNum As Long
    Dim val2Digit As String
    Dim i As Long
    Dim otherVal As String

    Dim kodeInput As String
    Dim kodeRefRange As Range
    Dim kodeRefCell As Range
    Dim kuota As Variant
    Dim jumlahTerisi As Long
    Dim offsetKuota As Long

    On Error GoTo Selesai
    Application.EnableEvents = False

    ' Input hanya di kolom E sampai J (kolom 5 sampai 10)
    Set rngInput = Intersect(Target, Me.Range("E12:J100"))
    If rngInput Is Nothing Then GoTo Selesai
    If rngInput.Count > 1 Then GoTo Selesai

    Set cell = rngInput.Cells(1, 1)
    If cell.Value = "" Then GoTo Selesai

    rowNum = cell.Row
    colNum = cell.Column
    val2Digit = Left(cell.Value, 2)

    ' Cek 2 digit pertama tidak boleh sama dalam satu baris
    For i = 5 To 10
        If i <> colNum Then
            otherVal = Me.Cells(rowNum, i).Value
            If Left(otherVal, 2) = val2Digit And otherVal <> "" Then
                MsgBox "Input ditolak: Dua digit awal '" & val2Digit & "' sudah digunakan di baris ini.", vbExclamation
                cell.ClearContents
                GoTo Selesai
            End If
        End If
    Next i

    ' Cek kuota berdasarkan data di kolom O dan P dst
    kodeInput = cell.Value
    Set kodeRefRange = Me.Range("O2:O100")

    For Each kodeRefCell In kodeRefRange
        If kodeRefCell.Value = kodeInput Then
            offsetKuota = colNum - 5 ' E = 5, dst
            kuota = kodeRefCell.Offset(0, 1 + offsetKuota).Value

            If IsNumeric(kuota) Then
                jumlahTerisi = Application.WorksheetFunction.CountIf(Me.Range(Me.Cells(12, colNum), Me.Cells(100, colNum)), kodeInput)
                If jumlahTerisi > CLng(kuota) Then
                    MsgBox "Kode '" & kodeInput & "' melebihi kuota maksimal (" & kuota & ") di kolom " & Chr(64 + colNum), vbCritical
                    cell.ClearContents
                    GoTo Selesai
                End If
            End If
            Exit For
        End If
    Next kodeRefCell

Selesai:
    Application.EnableEvents = True
End Sub

Cara Memasang Kode VBA

Agar script ini bisa berjalan, ikuti langkah berikut:

  1. Buka Excel dan tekan ALT + F11 untuk membuka Visual Basic Editor.
  2. Di jendela Project Explorer, klik dua kali pada nama sheet tempat Anda ingin menerapkan jadwal (misal: Sheet1).
  3. Tempelkan kode VBA di atas ke dalam jendela yang terbuka.
  4. Simpan file Anda dengan ekstensi .xlsm (Macro-Enabled Workbook).
  5. Tutup jendela VBA dan kembali ke Excel. Coba isi data pada area E12:J100.
Baca Juga  Panduan Lengkap Macro VBA Excel untuk Mengotomatisasi Tugas Berulang
Kode VBA membuat jadwal pelajaran anti bentrok

Script ini akan langsung memberi notifikasi dan menghapusnya apabila ada dua kode dengan awalan sama dalam satu baris, karena meski mapelnya berbeda tapi dengan guru yang sama. Berikut penampakannya:

Hasil 1 membuat jadwal pelajaran anti bentrok

Atau jika kuota sudah melebihi batas yang ditentukan pada kolom P ke kanan.

Hasil 2 membuat jadwal pelajaran anti bentrok

Kesimpulan

Mengatur jadwal pelajaran kini bisa dilakukan secara lebih mudah dan cerdas. Dengan bantuan Excel dan VBA, Anda bisa membuat jadwal pelajaran anti bentrok tanpa repot memeriksa ulang satu per satu. Sistem ini dapat disesuaikan untuk kebutuhan sekolah skala kecil maupun besar.

Dengan menguasai teknik membuat jadwal pelajaran anti bentrok, Anda tidak hanya menghemat waktu, tetapi juga meningkatkan efisiensi proses belajar mengajar secara keseluruhan. Jadi, yuk mulai gunakan metode ini dan jadikan sistem penjadwalan sekolah Anda lebih profesional!

Download Template Gratis

Bagi Anda yang ingin mencoba teknik ini secara langsung, kami telah menyiapkan template gratis yang dirancang khusus untuk membantu Anda mempaktikkan Cara Efektif Membuat Jadwal Pelajaran Anti Bentrok dengan Bantuan Excel dan VBA ini. File Excel bisa didownload melalui tautan berikut:

download file Excel

Atau juga jika ingin mempelajari langkah demi langkah secara visual, bisa kunjungi Youtube Channel Depot Excel. Di sana teman-teman akan melihat bagaimana rumusnya bekerja. Semoga bermanfaat!

0 Komentar

Kirim Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Join Our Newsletter