Catetan
Tampilkan postingan dengan label Macro Excel. Tampilkan semua postingan
Tampilkan postingan dengan label Macro Excel. Tampilkan semua postingan

MEMBUAT INPUT FORM SHEET INSERT GAMBAR DI EXCEL 11

Sudah sekian lama tidak melakukan aktivitas blogging, kali ini aku coba bikin posting, mengenai Entry worksheet form dengan gambar.

Postingan ini sebenernya merupakan lanjutan dari postingan entry sheet form, tetapi diberi tambahan dengan menambahkan gambar yang bisa diambil di folder, dan dijadikan dalam satu row dengan database.

Untuk kodenya sendiri aku bagi menjadi 3 bagian

  • Dengan menggunakan data validation untuk input cell

    1. Email

      =NOT(ISERROR(FIND("@",D12,1)))
    2. No Tlp/HP

      =ISNUMBER(D14)
    3. Tgl lahir

      Merupakan validation list

    4. Temp Gambar

      untuk temp gambar ada di cell I50, dimana aku kasih value yang sama dengan input cell nama, yang bertujuan supaya data value gambar tidak kosong.

  • Kode makro

    untuk kode makro ada dua

    yang pertama kode untuk entry data

    Option Explicit

    Sub inputsheetform()

    Dim ws As Worksheet
    Dim ws1 As Worksheet
    Dim nRw As Long
    Dim i As Long
    Dim a As Long
    Dim rng As Range
    Dim rng2 As Range
    Dim rngCp As String
    Dim anum As String
    Dim rpic As String
    Dim sh as shape

    rngCp = "D7,D9,D12,D14,D17,E17,F17,I50" 'range input cell

    Set ws1 = Sheets("INPUT")
    Set ws = Sheets("DATABASE")

    'peringatan apabila cell input ada yang kosong
    With ws1
    Set rng = .Range(rngCp)
    If Application.CountA(rng) <> rng.Cells.Count Then
    MsgBox "Input Form diisi semua yach...!"
    Exit Sub
    End If
    End With
    Application.CutCopyMode = False
    With ws
    'mencari baris yang kosong
    nRw = .Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0).Row
    anum = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
    rpic = .Cells(.Rows.Count, "I").End(xlUp).Offset(1, 0).Row
    End With

    ws1.Range("I50").Copy
    ws.Select
    Range("I" & rpic).Select
    ActiveSheet.Paste

    'melakukan input data
    With ws

    'input data sesuai range input cell
    i = 2
    For Each rng2 In rng.Cells
    ws.Cells(nRw, i).Value = rng2.Value
    i = i + 1
    Next rng2

    'membuat auto number
    If IsEmpty(.Range("A3")) Then
    .Range("A3") = 1
    Else
    .Range("A" & anum).Value = .Range("A" & anum).Offset(-1, 0) + 1
    End If
    End With
    'menghapus cell input, untuk diinput lagi
    With ws1
    On Error Resume Next
    With .Range(rngCp).Cells.SpecialCells(xlCellTypeConstants)
    .ClearContents
    Application.GoTo .Cells(1)
    End With
    For Each Sh In .Shapes
    If Not Application.Intersect(Sh.TopLeftCell, .Range("I50")) Is Nothing Then
    If Sh.Type = msoPicture Then Sh.Delete
    End If
    Next Sh
    On Error GoTo 0
    End With
    End Sub

    yang kedua kode makro untuk mengambil gambar dari folder yang diinginkan.
    Sub Gambar()
    Dim sGb As String, pic As Picture
    Dim ws1 As Worksheet

    Set ws1 = Sheets("INPUT")
    ws1.Range("I50").Select
    sGb = Application.GetOpenFilename _
    ("Gambar (*.gif; *.jpg; *.bmp; *.tif), *.gif; *.jpg; *.bmp; *.tif", _
    , "Pilih Gambar untuk diinsert")

    If sGb = "False" Then Exit Sub

    Set pic = ActiveSheet.Pictures.Insert(sGb)
    With pic

    .Height = ActiveCell.Height
    .Width = ActiveCell.Width
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
    End With
    ws1.Range("F17").Select

    Set pic = Nothing
    Set ws1 = Nothing

    End Sub
seperti biasa apabila ingin mempelajari lebih lanjut file bisa di download disini.
Next ...

MEMBUAT INPUT SHEET FORM 11

Akhirnya ada waktu luang untuk membuat postingan lagi, dan sekarang kembali lagi posting hal yang berkaitan dengan excel.

Biasanya aku membuat posting excel mengenai entry data dengan userform, tetapi untuk posting kali ini, aku membuat entri data worksheet.

Pada input di worksheet ini aku memakai beberapa validasi pada worksheet diantaranya, pada kategori input email aku memakai validasi supaya user harus melakukan input kata-kata yang ada tanda @, rumus validasinya,
=NOT(ISERROR(FIND("@",D7,1)))

kemudian pada kategori input no telepon aku memakai validasi, supaya hanya number saja yang bisa diinput, rumus validasinya.
=ISNUMBER(F5)
sisanya hanya validasi standar, yaitu hanya berdasarkan validasi list.

Untuk kode makronya sendiri bisa dilihat dibawah ini
Option Explicit
Sub inputsheetform()
    
Dim ws As Worksheet
Dim anum As Long
Dim nextRow As Long
Dim i As Long
Dim rng1 As Range
Dim rngCp As String
Dim rng2 As Range
    
rngCp = "D5,D7,F5,F7,G7,H7" 'range input cell
Set ws = Sheets("input")
nextRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Offset(1, 0).Row
anum = ws.Cells(ws.Rows.Count, "B").End(xlUp).Offset(1, 0).Row

'peringatan apabila cell input ada yang kosong
With ws
    Set rng1 = .Range(rngCp)
    If Application.CountA(rng1) <> rng1.Cells.Count Then
        MsgBox "Input Form diisi semua yach...!"
        Exit Sub
    End If
End With

'melakukan input data
With ws
'membuat auto number
    If IsEmpty(.Range("B18")) Then
        .Range("B18") = 1
    Else
        .Range("B" & anum).Value = .Range("B" & anum).Offset(-1, 0) + 1
    End If
'input data sesuai range input cell
    i = 3
    For Each rng2 In rng1.Cells
        .Cells(nextRow, i).Value = rng2.Value
        i = i + 1
    Next rng2
End With
    
'menghapus content di cell input
With ws
    On Error Resume Next
    With .Range(rngCp).Cells.SpecialCells(xlCellTypeConstants)
        .ClearContents
        Application.GoTo .Cells(1)
    End With
    On Error GoTo 0
End With
End Sub
Nach demikianlah postingan ini berakhir, mudah-mudahan ada manfaatnya.
Seperti biasa kalau mau lihat contoh file-nya bisa di DOWNLOAD disini
Next ...

QUERY DATA DI EXCEL DENGAN KODE SQL 4

sebelumnya aku pernah membuat postingan mengenai MEMBUAT QUERY DI EXCEL, tetapi dalam postingan tersebut prosesnya hanya menampilkan kode sql dari hasil query secara manual di excel.

Nach... Sekarang bikin lagi tulisan mengenai query data di excel dengan kode sql yang ada di cell dan bisa diotak-atik serta tampilan hasil query juga di berada di range yang telah ditentukan.

Untuk melakukan proses ini ada beberapa tahap yang harus dilakukan...
  1. Memberikan nama Database yang ada dengan cara Insert --> Name --> Define, ketikkan Nama Database pada Names in workbook dan pilih range pada Refers To
    Dalam hal ini dibuat dua database dengan nama DATA1 dan DATA2
  2. pada Jendela Makro pilih menu Tools --> Reference --> Centang Microsoft ActiveX Data Objects 2.5 Library















  3. setelah itu insert module dan masukkan kode makro di bawah ini

Public Sub QueryWorksheet(szSQL As String, rgStart As Range, wb As String)
Dim rsData As ADODB.Recordset
Dim Koneksi As String
On Error GoTo ErrHandler
Application.StatusBar = "Data Sedang di Proses ....."
'setting koneksi dengan workbook master
Koneksi = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & wb & ";" & _
"Extended Properties=Excel 8.0;"

Set rsData = New ADODB.Recordset

rsData.Open szSQL, Koneksi, adOpenForwardOnly, adLockReadOnly, adCmdText

'Cek data paling akhir
If Not rsData.EOF Then
'memasukkan data yang ada
rgStart.CopyFromRecordset rsData
Else
MsgBox "Tidak ada data yang harus diquery", vbCritical
End If
'menutup koneksi
rsData.Close

Set rsData = Nothing
Application.StatusBar = False
Exit Sub
ErrHandler:
'Jika ada kesalahan kode query
MsgBox "Query tidak bisa dilakukan, coba cek sql statement-nya"
Set rsData = Nothing
Application.StatusBar = False
End Sub

Sub testsql()
Dim rgdatasql As Range
Dim rgcodesql As String
rgcodesql = Range("B3").Text 'range untuk kode sql
Set rgdatasql = Range("B9") 'range untuk data hasil query sql

rgdatasql.Resize(30, 4).ClearContents 'menghapus data hasil query
'menampilkan hasil query sesuai dengan kode sql yang ada
QueryWorksheet rgcodesql, rgdatasql, ThisWorkbook.FullName

End Sub

Sub resik()
Dim rgdatasql As Range
Set rgdatasql = Range("B9")
'menghapus data di range B9 s/d e38
rgdatasql.Resize(30, 4).ClearContents
End Sub

Untuk melihat contoh file-nya bisa DOWNLOAD disini.

Kode ini aku dapatkan pada saat browsing diineternet, cuman aku lupa linknya dimana.. padahal bagus tuch... karena file ini aku temuin pada saat bersih-bersih folder komputer... yach supaya gak lupa dan ilang lagi... aku bikin postingan aja.
Next ...

MEMBUAT FORM LOGIN DAN REGISTER ANGGOTA DI EXCEL, VERSI 2 35

Akhirnya ada kesempatan bikin postingan lagi... yach disempet-sempetin.. sebenernya...

Postingan ini merupakan kelanjutan dari postingan sebelumnya, yaitu MACRO MEMBUAT FORM LOGIN DAN REGISTER ANGGOTA DI EXCEL...
Kelebihan dari postingan ini, disesuaikan dari Request beberapa pertanyaan yang masuk, diantaranya :

  1. Sheet Password di hide... dan hanya akan muncul satu sheet setiap proses
  2. User Mau tidak mau harus melakukan Login...
  3. User wajib mensetting security menjadi medium (rekomendasi) atau low (tidak direkomendasikan)..
  4. User harus dan wajib Enable Macro.... kalau tidak yach... datanya gak kelihatan...
  5. Dan kelebihan terakhir... lebih rapih dikit....he...

Apabila ada yang mengikuti blog ini, sebenernya kode dari file MEMBUAT FORM LOGIN DAN REGISTER ANGGOTA DI EXCEL Versi 2 ini merupakan gabungan dari beberapa kode postingan sebelumnya, yaitu :
  1. MACRO MEMBUAT FORM LOGIN DAN REGISTER ANGGOTA DI EXCEL
  2. WORKBOOK HANYA TERBUKA KETIKA ENABLE MACRO
  3. HIDE SHEET DATABASE INPUT FORM EXCEL

Untuk kodenya sendiri... aku taruh di Empat area di jendela visual basic yaitu
  1. Area UserFom
  2. Area Modeul
  3. Area ThisWorkbook
  4. Area Worksheet Password Untuk Rumus Fungsinya

Untuk kodenya sendiri bisa dilihat seperti dibawah ini, dan sehubungan postingan ini disempet-sempetin... jadi mohon maaf tidak bisa dijelaskan per baris kodenya....

Untuk mempelajari lebih lanjut filenya bisa langsung di DOWNLOAD DISINI...

1. Kode Area UserForm
Option Explicit
Dim sh As Object
Dim ws As Worksheet
Dim isi As Long
Dim Msg, Style, Title, Help, Ctxt, Response, MyString

'Properties ketika Userform aktif
Private Sub UserForm_Activate()
    ThisWorkbook.Application.Calculate
    ThisWorkbook.Sheets("Login").Visible = True
    
    'hanya sheet Login yang tampil
    For Each sh In ThisWorkbook.Worksheets
        If Not sh.Name = "Login" Then sh.Visible = xlSheetHidden
    Next sh
    
    FrmLog.Visible = True
    LogNam.SetFocus
    FrmDaf.Visible = False
    Daftar.Visible = True
    Login.Visible = False
Set sh = Nothing
End Sub
Private Sub Masuk_Click()
ThisWorkbook.Application.Calculate
Set ws = Sheets("Password")

ws.Range("E4") = LogNam.Value
ws.Range("F4") = LogPwd.Value
  
LogNam.Value = ""
LogPwd.Value = ""
LogNam.SetFocus
   
'kondisi jika cell I4, sheet password bernilai true, maka bisa masuk login
If ws.Range("I4").Value = True Then
    Msg = "Nama Anda : " & ws.Range("E4").Value & " ,Password : " & ws.Range("J4").Value
    Style = vbOKCancel + vbDefaultButton1
    Title = "Konfirmasi"
    Response = MsgBox(Msg, Style, Title)
    If Response = vbOK Then
        'kondisi jika cell j4, sheet password, nilainya "Admin" maka hanya sheet admin yg ditampilkan
        If ws.Range("J4").Value = "Admin" Then
            ThisWorkbook.Sheets("Admin").Visible = True
            For Each sh In ThisWorkbook.Worksheets
                If Not sh.Name = "Admin" Then sh.Visible = xlSheetHidden
            Next sh
            Me.Hide
        Else
            ' selain itu sheet user yang tampil
            ThisWorkbook.Sheets("User").Visible = True
            For Each sh In ThisWorkbook.Worksheets
                If Not sh.Name = "User" Then sh.Visible = xlSheetHidden
            Next sh
            Me.Hide
        End If
    End If
Else
'jika login salah maka akan muncul pesan dibawah ini
    MsgBox "Nama Ama password salah... Kalau belum termasuk Anggota silahkan Daftar"
End If
Set ws = Nothing
Set Response = Nothing
End Sub
Private Sub Daftar_Click()
'kondisi jika melakukan pendaftarn maka fram Login tidak tampil
FrmDaf.Visible = True
FrmLog.Visible = False
    With Status
        .AddItem "User"
        .AddItem "Admin"
    End With
Login.Visible = True
Daftar.Visible = False
End Sub
Private Sub Login_Click()
FrmLog.Visible = True
FrmDaf.Visible = False
Daftar.Visible = True
Login.Visible = False
End Sub

Private Sub Tambah_Click()
ThisWorkbook.Application.Calculate
Set ws = Sheets("Password")
'mencari cell di kolom B yang kosong
isi = ws.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row

'kondisi jika form pendaftaran kosong akan muncul message
If DafNam.Value = "" Or DafPwd.Value = "" Or Status.Value = "" Then
    MsgBox "Data harus diisi semua"
    DafNam.Value = ""
    DafPwd.Value = ""
    Status.Value = ""
    DafNam.SetFocus
Else
    'kalau form tidak kosong maka datanya akan di masukkan ke cell di kolom B, C, D yang kosong
    ws.Cells(isi, 2).Value = DafNam.Value
    ws.Cells(isi, 3).Value = DafPwd.Value
    ws.Cells(isi, 4).Value = Status.Value

    'untuk menghindari supaya tidak ada data user dan password yang sama
    If ws.Range("N4").Value > 1 Then
        MsgBox "Data sudah ada coba cari yang lain"
        ws.Range(ws.Cells(isi, 2), ws.Cells(isi, 4)).ClearContents
        DafNam.Value = ""
        DafPwd.Value = ""
        Status.Value = ""
        DafNam.SetFocus
    Else
        Msg = "Nama Anda : " & DafNam.Value & " ,Password : " & DafPwd.Value & " , Coba Login"
        Style = vbOKCancel + vbDefaultButton1
        Title = "Konfirmasi"
        Response = MsgBox(Msg, Style, Title)
            If Response = vbOK Then
                FrmDaf.Visible = False
                FrmLog.Visible = True
                LogNam.SetFocus
            Else
                ws.Range(ws.Cells(isi, 2), ws.Cells(isi, 4)).ClearContents
                DafNam.Value = ""
                DafPwd.Value = ""
                Status.Value = ""
                DafNam.SetFocus
            End If
    End If
End If
Set ws = Nothing
End Sub

Private Sub FrmDaf_Layout()
    DafNam.Value = ""
    DafPwd.Value = ""
    Status.Value = ""
End Sub
'kondisi untuk menonaktifkan icon Close "X"
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = True
        MsgBox "Maaf ya... harus login dulu"
    End If
End Sub

2. Untuk kode Area Modul bisa dilihat dibawah ini
Fungsi dari kode di Area Modul ini adalah untuk mengembalikan ke proses Login Kembali.

Option Explicit
Dim sh As Object

Sub AutoShape1_Click()
ThisWorkbook.Sheets("Login").Visible = True
   'hanya sheet Login yang tampil
    For Each sh In ThisWorkbook.Worksheets
        If Not sh.Name = "Login" Then sh.Visible = xlSheetHidden
    Next sh
UserForm1.Show
End Sub

3. Untuk kode Area Thisworkbook bisa dilihat dibawah ini
Fungsi dari kode di Area Thisworkbook adalah mengatur supaya User harus melakukan enable macro dan loading userform ketika workbook dibuka.

Option Explicit
Dim sh As Object
'proses untuk disable macro
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ScreenUpdating = False
    ThisWorkbook.Worksheets("Peringatan").Visible = xlSheetVisible
    
        For Each sh In ThisWorkbook.Worksheets
            If Not sh.Name = "Peringatan" Then sh.Visible = xlSheetVeryHidden
        Next sh
    
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    Application.DisplayAlerts = True
End Sub
'proses untuk enable macro
Private Sub Workbook_Open()
    Application.ScreenUpdating = True
        For Each sh In ThisWorkbook.Worksheets
            If Not sh.Name = "Peringatan" Then sh.Visible = xlSheetVisible
        Next sh
    
    ThisWorkbook.Worksheets("Peringatan").Visible = xlSheetVeryHidden
    UserForm1.Show
End Sub

Nach begitulah kiranya... postingan ini berakhir... Apabila ada pertanyaan... langsung saja pencet komentar... atau email juga boleh....
Next ...

WORKBOOK HANYA TERBUKA KETIKA ENABLE MACRO 6

Sebagai Informasi, segala pertanyaan yang saya terima, tidak menutup kemungkinan akan saya jadikan sebagai postingan, dan dalam postingan juga saya tidak akan menyebutkan nama atau instansi yang bertanya, jadi mohon maklum adanya.


Termasuk pertanyaan mengenai bagaimana caranya supaya user apabila membuka workbook yang ada macronya, harus dan mau tidak mau melakukan pilihan Enable Macro ?


Proses macro disini adalah melakukan Hide dan unhide sheet, apabila ada jendela peringatan pilihan enable atau disable macro, atau untuk level high security workbook.


Langsung saja ke caranya :

  1. Pada aktif workbook, untuk mempermudah buka satu workbook excel saja, tambahkan atau insert worksheet, kemudian beri nama peringatan
  2. Kemudian buka jendela Macro Visual Basic --> pada jendela Project --> VBAProject biasanya secara otomatis ada di sebelah pojok kanan atas, pilih atau double klik ThisWorkbook.
  3. kemudian pastekan saja kode dibawah ini kedalam jendela macro VBA-nya.

'proses untuk disable macro
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim ws As Worksheet 'ws sebagai worksheet

Application.ScreenUpdating = False 'menonaktifkan update yang berulang-ulang
Worksheets("peringatan").Visible = xlSheetVisible  'hanya worksheet peringatan yang tampil

For Each ws In ThisWorkbook.Worksheets ' untuk setiap worksheet yang nama sheetnya tidak sama dengan peringatan akan di hide
If Not ws.Name = "peringatan" Then ws.Visible = xlSheetVeryHidden
Next ws

Application.DisplayAlerts = False 
ActiveWorkbook.Save 
Application.DisplayAlerts = True
End Sub

'proses untuk enable macro
Private Sub Workbook_Open()
Dim ws As Worksheet
Application.ScreenUpdating = True
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = "peringatan" Then ws.Visible = xlSheetVisible
Next ws

Worksheets("peringatan").Visible = xlSheetVeryHidden
End Sub


Nach mungkin cukup begitu saja postingan ini dibuat, dan seperti biasa untuk mempermudah mempelajarinya, file yang mengandung kode macro diatas, bisa langsung di download disini.

Next ...

MEMBUAT ALARM TEKS BERKEDIP DI EXCEL 9

Sesuai Permintaan dari salah satu best friend, yang ingin mengetahui bagaimana membuat Text berkedip di excel, maka dibuatlah postingan ini.

Seperti diketahui bahwa secara normal text di excel tidak bisa dibuat berkedip, seperti halnya di word, jadi harus diakali dengan kode macro yang mengatur waktu pewarnaan dari teks tersebut dengan menggunakan aplikasi ontime.

Tetapi kalau hanya membuat postingan teks berkedip, tentunya tidak asyik, maka teks berkedip tersebut saya aplikasikan untuk membuat alarm diexcel.
Dimana alarm tersebut akan menghasilkan teks yang berkedip apabila waktunya sesuai dengan setting waktu yang telah ditentukan.

Langsung saja, kode makro dari teks berkedip bisa dilihat di bawah ini:

Public kedip As Double
Sub mulaikedip()
With ThisWorkbook.Sheets(1).Range("E2")
If .Font.ColorIndex = 3 Then
.Font.ColorIndex = 4
.Interior.ColorIndex = 3
Else
.Font.ColorIndex = 3
.Interior.ColorIndex = xlColorIndexNone
End If
End With
kedip = Now + TimeSerial(0, 0, 1)
Application.OnTime kedip, "mulaikedip", True
End Sub

Sub berhentikedip()
With ThisWorkbook.Sheets(1).Range("e2")
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexNone
End With
Application.OnTime kedip, "mulaikedip", False
Application.ScreenUpdating = True
End Sub
Sedangkan untuk kode Jamnya sama seperti pada postingan sebelumnya di Excel Calender Slideshow dan Alarm Analog Jam
Option Explicit
Dim nexttick
Sub jam()
ThisWorkbook.Sheets(1).Calculate
nexttick = Now + TimeValue("00:00:01")
Application.OnTime nexttick, "Jam", , True
End Sub

Sub berhenti()
On Error Resume Next
Application.OnTime nexttick, "Jam", , False
Application.ScreenUpdating = True
End Sub

Kemudian kode untuk melakukan loading kode makro pada workbook bisa dilihat dibawah ini
Private Sub Workbook_BeforeClose(Cancel As Boolean)
berhenti
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
berhenti
End Sub

Private Sub Workbook_Open()
jam
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Range("F2").Value = 1 Then
mulaikedip
Else
berhentikedip
End If
End Sub
dan terakhir aku juga pake rumus di excel,
  • Rumus di Cell F2 =IF(EXACT((C2+D2),HOUR(NOW())+MINUTE(NOW()))=TRUE,1,"")
  • Rumus di cell E2 =IF(F2=1,"ALARM MENYALA","")
sebenernya rumus excel diatas bisa juga diganti kode makro... bisa di cari sendiri lah.... buat latihan

Nach... seperti biasa kalau mau lihat contoh hasilnya bisa di DOWNLOAD disini
Next ...

COPY MULTI SHEET EXCEL 1

Setelah sekian lama, dihadapkan pada permasalahan dunia, akhirnya bisa bikin postingan juga, walaupun pikiran terpecah belah.
Tetapi pertanyaan, seperti sebuah tantangan, dan hal tersebut seperti sebuah hiburan, melepaskan semua permasalahan walau sejenak.
Halah... koq jadi curhat, langsung saja, copy multi sheet excel ini aku bagi menjadi 3 perintah :

  1. Melakukan Copy berdasarkan range yang telah ditentukan
  2. Melakukan copy berdasarkan kolom masing-masing sheet yang telah ditentukan
  3. Melakukan Copy Data sheet saja disetiap worksheet yang ada

Langsung saja kodenya bisa dilihat dibawah ini:
Option Explicit
Dim ws As Worksheet
Dim ws1 As Worksheet

Sub copymultirangesheet()

On Error Resume Next
'kalau ada sheet hasil maka delete tanpa peringatan
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("HASIL").Delete
Application.DisplayAlerts = True

'menambahkan sheet dengan nama HASIL
Set ws = ActiveWorkbook.Worksheets.Add
ws.Name = "HASIL"

For Each ws1 In Worksheets
If ws1.Name <> "HASIL" Then 'untuk worksheet yang namanya tidak sama dengan HOME
ws1.Range("A2:E2").Copy 'copy range A2:E2
ws.Range("A1:E1").Value = ws1.Range("A1:E1").Value 'membuat judul
With ws.Cells(Rows.Count, 1).End(xlUp).Offset(1) 'copy range ke worksheet HASIL
.PasteSpecial (xlPasteValues)
.PasteSpecial (xlPasteFormats)
End With

End If
Next ws1
With ws 'kondisi untuk hasil copy di sheet HASIL
.Range("A1:E1").Font.Bold = True
.Columns.AutoFit
.Range("A1").Select
End With
End Sub
Sub copymultikolomsheet()
'kalau ada sheet hasil maka delete tanpa peringatan
On Error Resume Next
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("HASIL").Delete
Application.DisplayAlerts = True

'menambahkan sheet dengan nama HASIL
Set ws = ActiveWorkbook.Worksheets.Add
ws.Name = "HASIL"

For Each ws1 In Worksheets
If ws1.Name <> "HASIL" Then 'untuk worksheet yang namanya tidak sama dengan HOME
ws1.Range("A:A").Copy 'copy data di kolom A

With ws.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) 'paste ke sheet hasil
.PasteSpecial (xlPasteValues)
.PasteSpecial (xlPasteFormats)

End With

End If

Next ws1
With ws 'kondisi untuk di sheet HASIL
.Range("A:A").Delete
.Range("A1:E1").Font.Bold = True
.Columns.AutoFit
.Range("A1").Select
End With


End Sub
Sub copymultidatasheet()
Dim rngku As Range

'kalau ada sheet hasil maka delete tanpa peringatan
On Error Resume Next
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("HASIL").Delete
Application.DisplayAlerts = True

'menambahkan sheet dengan nama HASIL
Set ws = ActiveWorkbook.Worksheets.Add
ws.Name = "HASIL"

For Each ws1 In Worksheets
Set rngku = ws1.Range("A2", ws1.Cells(ws1.UsedRange.Row + ws1.UsedRange.Rows.Count, ws1.UsedRange.Column + ws1.UsedRange.Columns.Count)) 'setting range untuk di copy
If ws1.Name <> "Hasil" Then
rngku.Copy
ws.Range("A1:E1").Value = ws1.Range("A1:E1").Value
With ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 'copy data ke sheet HASIL
.PasteSpecial (xlPasteValues)
.PasteSpecial (xlPasteFormats)
End With
End If
Next ws1
With ws 'kondisi untuk sheet HASIL
.Range("A1:E1").Font.Bold = True
.Columns.AutoFit
.Range("A1").Select
End With

End Sub

Contohnya bisa di langsung di DOWNLOAD disini
Next ...

ENTRY DATA DARI BEBERAPA FILE WORKBOOK EXCEL 16


Dilihat dari judulnya, kayaknya menarik... menurutku loh...

Proses dari Entry Data ini adalah dengan menggunakan beberapa workbook untuk membuka form entry data, dan menyimpan hasil entry datanya ke satu file workbook master.

Tapi form ini baru aku coba di satu komputer, jadi bagaimana hasilnya bila di entry data-nya dari beberapa komputer... mungkin bisa di coba sendiri.


Dan untuk kodenya bisa di pelajari di bawah ini


Private Sub CommandButton1_Click()
Dim rc As Long
Dim fileku As String
Dim wb As Workbook

Application.ScreenUpdating = False
fileku = ActiveWorkbook.Path
rc = ActiveSheet.UsedRange.Rows.Count 'menghitung jumlah baris yang ada

With Sheets(1).Range("A1")
.Offset(rc, 0).Value = Me.TextBox1.Value 'baris akhir kolom A yang kosong, sama dengan nilai textbox nama
.Offset(rc, 1).Value = Me.TextBox2.Value 'baris akhir kolom B yang kosong, sama dengan nilai textbox barang
.Offset(rc, 2).Value = Me.TextBox3.Value 'baris akhir kolom C yang kosong, sama dengan nilai textbox penjualan
End With
ThisWorkbook.Save
Workbooks.Open fileku & "\" & "Master.xls" 'buka workbook master
Set wb = ActiveWorkbook
rc = ActiveSheet.UsedRange.Rows.Count
With Sheets(1).Range("A1")
.Offset(rc, 0).Value = Me.TextBox1.Value
.Offset(rc, 1).Value = Me.TextBox2.Value
.Offset(rc, 2).Value = Me.TextBox3.Value
.Offset(rc, 3).Value = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) 'nama dari workbook yang entry
End With

wb.Save
wb.Close 'tutup workbook master
Application.ScreenUpdating = True
Unload Me
Entry_Form.Show
End Sub

Untuk saat ini cukup sekian dulu, dan jika ingin mempelajari lebih lanjut file bisa di DOWNLOAD disini.

Mohon informasinya apabila ada perbaikan yang lebih keren, soalnya aku juga mo belajar...

Next ...

COPY MULTIFILE EXCEL DI SATU FOLDER 12


Posting ini aku buat, karena banyaknya request mengenai copy multi file excel.
Sebelumnya aku pernah membuat postingan mengenai copy data multifile excel yang bersifat dasar.

Sekalian mo kasih informasi kalau tulisan di blog ini, aku buat bukan karena sok tahu atau sok ngajarin, tetapi sebagai catatan dan pembelajaran bagi aku secara pribadi, dan syukur ada gunanya bagi orang lain, tetapi karena blog ini bisa dilihat siapa saja, jadi yach mohon maaf apabila ada kesalahan.

Langsung saja ke penjelasan perihal postingan ini, dimana prosesnya adalah melakukan copy data sheet 1, dari semua file excel di folder yang telah ditentukan, dan melakukan paste value pada sheet baru.

Sedangkan untuk kodenya adalah :
Sub copy_multifile_difolder()
Dim foldr As String
Dim nwb As Workbook
Dim lwb As Workbook
Dim nws As Worksheet
Dim ws As Worksheet
Dim fileku As String
Dim rngku As Range
Dim rnum As Long

foldr = ThisWorkbook.Path & "\fileku\" 'kondisi foldr sebagai alamat folder fileku
Set nwb = Workbooks.Add(1) 'tambah sheet
Set nws = nwb.ActiveSheet 'sheet baru menjadi aktif
Set ws = Sheets(1) 'setting ws sebagai sheet 1

'kondisi jika dibelakang folder tidak ada tanda "\"
If Right(foldr, 1) <> "\" Then
foldr = foldr & "\"
End If

'kondisi jika tidak ada file di folder fileku
fileku = Dir(foldr & "*.xl*")
If fileku = "" Then
MsgBox "tidak ada file excel"
Exit Sub
End If

Do Until fileku = ""
If foldr <> ThisWorkbook.Path Or fileku <> ThisWorkbook.Name Then
Set lwb = Workbooks.Open(Filename:=foldr & fileku) 
'kondisi untuk setiap sheet 1
For Each ws In lwb.Worksheets
'setting range yang akan di copy
Set rngku = ws.Range("A2", ws.Cells(ws.UsedRange.Row + ws.UsedRange.Rows.Count, ws.UsedRange.Column + ws.UsedRange.Columns.Count))
'membuat judul
If rnum = 0 Then
nws.Range("A1", nws.Cells(1, rngku.Columns.Count)).Value = ws.Range("A1", ws.Cells(1, rngku.Columns.Count)).Value
rnum = 1
End If
'copy data dari file sumber ke sheet baru
rngku.Copy
nws.Range("A" & rnum + 1).Resize(rngku.Rows.Count, rngku.Columns.Count).PasteSpecial xlPasteValues
rnum = rnum + rngku.Rows.Count - 1
Next
lwb.Close False
End If
fileku = Dir() 'setting nama file menjadi variable
Loop

nwb.Sheets(1).Select
Application.EnableEvents = True
Application.ScreenUpdating = True

'membersihkan memory
Set nwb = Nothing
Set nws = Nothing
Set ws = Nothing
Set lwb = Nothing
Set rngku = Nothing
End Sub


Demikianlah sehingga postingan ini berakhir, mohon informasinya apabila ada kesalahan.
Dan sekali lagi file bisa langsung di Download disini.

Next ...

FILTER WARNA CELL DI EXCEL 6


Kemarin ada lagi permintaan untuk melakukan autofilter kolom berdasarkan warna cell.
langsung saja aku jawab dengan hati yang girang, karena bisa berbagi lagi...."ocreh tunggu bentar ya"

Dalam postingan ini aku akan membahas mengenai cara melakukan filter data excel berdasarkan warna cell dalam satu kolom.

Permasalahan dalam file tersebut pada range B5 s/d B14 akan di filter cuman filternya berdasarkan warna dari tiap cel yang ada di range tersebut.

Nach... untuk melakukan filter tersebut dibuatlah bantuan pada akhir kolom, untuk menentukan index warna dari tiap-tiap cel yang ada di range B5 s/d B14, berikut kodenya :

Sub filter_warna()
Dim lg As Long

Application.ScreenUpdating = False

lg = Range("D2").Interior.ColorIndex 'lg sebagai nilai warna di cel D2
Range("E5:E14").Font.ColorIndex = 2 'huruf di range E5 s/d E14 menjadi putih

'mengkondisikan nilai di cell E5 s/d E14 menjadi nilai dari warna di cell
For i = 5 To 14
Cells(i, 5).Value = Cells(i, 2).Interior.ColorIndex
Next

With Sheet1.Rows("4:65536")
.AutoFilter
.AutoFilter Field:=5, Criteria1:=lg
End With

Application.ScreenUpdating = True
End Sub

Sub buka_filter()

Application.ScreenUpdating = False
If Sheet1.AutoFilterMode Then
Sheet1.Cells.AutoFilter
Sheet1.Range("E5:E14").Clear
End If
Application.ScreenUpdating = True

End Sub

Seperti biasa, untuk file-nya bisa langsung di DOWNLOAD disini
Next ...

DOUBLE CLICK CELL INSERT COMMENT DI EXCEL 3


Postingan ini berdasarkan request dari salah satu teman di facebook, yang menanyakan cara membuat double click di cell excel.

Langsung saja aku buat salah satu contoh perintah double click di cell excel, pada range tertentu, yang akan menampilkan input box, dan menampilkan hasil input box ke comment di active cell.

Caranya cukup sederhana karena kode makronya dipasang di worksheet, yaitu dengan melakukan Klik kanan pada sheet tab excel (misal : Sheet1), dan pilih View Code.

Selanjutnya tinggal copy aja kode di bawah ini kedalamnya.

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim komen As String
Dim komen2 As String
'mengkondisikan range D2:D5
If Not Intersect(Target, Range("D2:D5")) Is Nothing Then
'kondisi apabila comment tidak ada di target double click
If Target.Comment Is Nothing Then
'memunculkan inputbox dan menambahkan hasil inputbox sebagai comment
komen = InputBox("Catetan:", "Informasi")
If komen = "" Then Exit Sub'keluar dari kondisi perintah double click bila inputbox tidak diisi
Target.AddComment Text:=komen
Target.Comment.Visible = False
Else
'kondisi apabila target double click sudah ada comment teks-nya
If Target.Comment.Text <> "" Then
'memunculkan inputbox dan mengganti comment teks yang sudah ada sesuai hasil inputbox yang baru
komen2 = InputBox("Catetan:", "Informasi")
If komen2 = "" Then Exit Sub
komen = Target.Comment.Text
Target.ClearComments
Target.AddComment Text:=komen2
Else

komen2 = InputBox("Catetan:", "Informasi")
If komen2 = "" Then Exit Sub
Target.ClearComments
Target.AddComment Text:=komen2
End If
End If
End If
End Sub


seperti biasa kalau mau tambahan bantuan file contohnya bisa di DOWNLOAD disini

Next ...

COPY DATA DARI MULTIPLE FILE 46

Nulis lagi ah biar ga lupa... kebetulan ada temen kantor yang minta dibantuin untuk bikin makro yang berfungsi melakukan copy dari range yang ada di spesifik sheet dan beberapa workbook... aku langsung jawab... "ocreh ntar ya... aku ngelarin kerjaanku dulu".... Beberapa hari kemudian baru aku mencoba membuat makro permintaan teman kantorku... hal pertama yang terlintas dalam otakku adalah aku harus membuat tahapan prosesnya terlebih dahulu...

  1. Hal pertama adalah membuka excel baru untuk tempat kode makro

  2. Kemudian membuat tempat atau sheet untuk menempatkan hasil copy, sheet tersebut tak namain "gue"

  3. Kemudian membuka file workbook dan memilih nama sheet yang akan di copy

  4. Mencari Range data yang akan di copy

  5. Action copy

  6. Action Paste ke sheet baru, utk copy file pertama selesai

  7. Selanjutnya melakukan copy file kedua, untuk proses dan kode makronya tetep, dari membuka file baru yang akan dicopy sampai proses paste

  8. Terakhir...menutup file yang telah di copy... selesai

Yup begitulah proses copy data dari multiple file....

Setelah tahu prosesnya... aku langsung membuka workbook excel dan langsung menuju jendela vba makro... dan langsung mengetikkan kode makronya yaitu :

Private sub copy_multiplefile()
'sesuai proses nomor 2 aku ingin membuat sheet baru dengan nama "gue", jadi supaya tidak terjadi error, apabila sudah ada sheet "gue", aku harus menghapus sheet tersebut, kodenya adalah,

Application.DisplayAlerts=False
On Error Resume Next
ActiveWorkbook.Worksheets("gue").Delete
On Error GoTo 0

Application.DisplayAlerts = True
'setelah terhapus kemudian aku membuat sheet baru dengan nama "gue" dan supaya lebih memudahkan, aku mensetting worksheet gue menjadi "ws", kodenya,

Set ws=ThisWorkbook.Worksheets.AddSheet
ws.Name="gue"
'kemudian aku membuka file excel pertama yang akan di copy
'COPY PASTE FILE PERTAMA
Workbooks.Open Filename:="D:\karsono\File1.xls" 'tempat file
'setelah terbuka, aku langsung mencari nama sheet dan range datanya
With Worksheets("data1")

Intersect(.UsedRange, .Range("A1", .Cells(Rows.Count,Columns.Count))).Copy 'mencari range yang ada datanya dimulai dari cell A1 supaya judul datanya ikut ke copy, setelah di copy kemudian aku menuju ke sheet "gue" dan melakukan paste special value dimulai dari cell yang kosong

ws.Range("A" & ws.Range("A65536").End(xlUp).Row).Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'file pertama sudah ke copy, kemudian aku membuka lagi file excel yang lain dengan proses dan kode yang sama
'COPY PASTE FILE KEDUA
Workbooks.Open Filename:="D:\karsono\File2.xls" 

With Worksheets("data2")
Intersect(.UsedRange, .Range("A2", .Cells(Rows.Count, Columns.Count))).Copy 'perbedaannya disini adalah aku melakukan copy data dari A2, jadi cuman datanya aja

End With
ws.Range("A" & ws.Range("A65536").End(xlUp).Row).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'nah... disini baru dijelaskan kode ini adalah mencari range, bisa dilihat pada kode offset antara paste file pertama .offset(0,0) dan paste file ke dua .offset(1,0), untuk yang paste pertama bermaksud mengcopy, tanpa berpindah dari range yang ditemukan, tetapi untuk paste yang kedua bermaksud apabila ditemukan range maka, dia akan berpindah satu baris ke bawah jadi tidak akan menimpa yang atasnya... begicu... 
'DEMIKIAN UNTUK FILE SETERUSNYA
'Terakhir aku menutup file-file yang telah dicopy
Workbooks("File1").Close savechanges:=False

Workbooks("File2").Close savechanges:=False
End Sub 
'beress

Untuk melihat hasilnya langsung pencetAlt + F8 Tetapi kalo aku lebih suka membuat commandbutton, langsung aja aku bikin tuch commandbutton, klik 2x untuk pergi ke jendela vba makro, aku tulis dech kodenya

Sub CommandButton1_Click()

Call copy_multiplefile 'memanggil makro untuk copy multiplefile

End Sub
'beres...

Tinggal kasih dah ni rumus......
Next ...

DIAGRAM ANIMASI DI EXCEL 0


Alangkah lucunya negeri ini, yup itu merupakan salah satu film bioskop indonesia yang beredar di sekita bulan April 2010.

Kebetulan Minggu kemarin aku nonton film tersebut, dan hampir membuat perutku menjadi kram, karena kebanyakan tertawa.

Menurutku film tersebut merupakan salah satu film terbaik yang ada di Indonesia. Dengan latar cerita yang mengkondisikan permasalahan yang terjadi akibat kesenjangan sosial diantara masyarakat.

salah satu adegan yang paling aku sukai adalah adanya penjelasan mengenai diagram yang menggambarkan betapa korupsi merupakan pekerjaan yang mempunyai penghasilan terbesar diantara beberapa kejahatan lainnya....

Dan berkaitan dengan film tersebut aku, mencoba membuat postingan diagram animasi di excel, dengan data yang di dasarkan pada film alangkah lucunya negeri ini, diagram ini bukan bermaksud untuk hal-hal yang buruk, tetapi hanya sekedar informasi mengenai cara membuat diagram animasi di excel.

Seperti biasa, untuk mempelajari lebih lanjut, file bisa di DOWNLOAD disini

Next ...

ALARM ANALOG JAM DI EXCEL 8

Satu lagi coba bikin tulisan mengenai Alarm analog jam di excel, dimana dalam Alarm analog jam tersebut, ada fungsi untuk setting alarm dari tanggal sampai waktu yang diinginkan, disertai pesan apa yang diinginkan ketika alarm menyala.

Seperti biasa file ini ada di...


Nb: Link File Download telah diupdate di sini : DOWNLOAD
Next ...

EXCEL CALENDER SLIDE SHOW 5

Kebetulan banyak waktu kosong, yach... ngapain lagi selain bikin tulisan... Nach... kali ini aku coba membuat Jam dan kalender di excel, yang akan selalu update sesuai jam dan tanggal di komputer, terkecuali untuk tahun dan bulannya, di dalam file ini harus di rubah sesuai keinginan. Tetapi apabila ingin semuanya serba otomatis ada tiga proses yang harus dilakukan :

  1. Ganti Cell tahun, pada contoh ada di cell J3, dengan rumus =year(today())
  2. Pada Cell Bulan, pada contoh ada di cell K3, clear all validation-nya (Menu Data-Validation-Clear all), ganti dengan rumus =text(today(),"mmmm")
  3. Pada Cell S17, tulis rumus berikut =date(J3,month(today()),1)

Selain itu, kalender dan jam ini aku sertakan image slide show, kalau dilihat bentuknya sich kayak Desktop Calender Elektronik... he.. he.. yach semuanya tergantung yang ngeliat lah, kalau mau mempelajarinya juga boleh, tinggal di DOWNLOAD disini.

Next ...

AUTO COPY FILTER DI EXCEL 3

Mata sebenernya dah sepet banget ngelihat komputer karena kerjaan yang berhubungan dari angka dengan baris yang berjibun, tetapi untuk membantu menyegarkan otak aku coba membuat tulisan lagi yang berhubungan dengan excel macro.

Seperti biasa tulisan ini aku buat berdasarkan request dari kerjaan, yang proses kerjanya adalah melakukan copy database yang telah di filter di excel ke workbook yang baru secara otomatis.

Langsung sajah berhubung anak-anak juga dah pada pulang...
kode makronya adalah sebagai berikut :

Option Explicit
Sub ExtractReps()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim nws As Worksheet
Dim rng As Range
Dim r As Integer
Dim c As Range

'setting database
Set ws1 = Sheets("Sheet1")
Set rng = ws1.Range("A1:E97")

'copy data yang di filter
ws1.Columns("C:C").Copy Destination:=Range("L1")

'setting nilai filter dengan kondisi tidak ada data yang kembar
ws1.Columns("L:L").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("J1"), Unique:=True
r = Cells(Rows.Count, "J").End(xlUp).Row

'copy nama judul di kolom C
Range("L1").Value = Range("C1").Value

'copy database yang difilter ke sheet baru
For Each c In Range("J2:J" & r)
ws1.Range("L2").Value = c.Value
Set ws2 = Sheets.Add
ws2.Move After:=Worksheets(Worksheets.Count)
ws2.Name = c.Value
rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Sheet1").Range("L1:L2"), CopyToRange:=ws2.Range("A1"), Unique:=False
Next
ws1.Select
ws1.Columns("J:L").Delete

'pindahkan sheet hasil copy filter ke workbook baru
For Each ws3 In ThisWorkbook.Worksheets
If ws3.Name <> "Sheet1" Then
If wb Is Nothing Then
ws3.Move
Set wb = ActiveWorkbook
Else
ws3.Move After:=nws
End If
Set nws = ActiveSheet
End If
Next ws3

'mengaktifkan workbook database asal dan membuat filter
ThisWorkbook.Activate
ws1.Range("A1:E1").AutoFilter
ws1.Range("A1").Select
End Sub

Untuk membantu mempermudah mempelajarinya, berikut ini aku lampirkan filenya. silahkan di DOWNLOAD disini.
Next ...

DISABLE EXCEL ICON X DI WINDOWS USER FORM 1

Dikarenakan kondisinya lagi demen melajarin MAcro VBA Excel, disini aku coba bikin tulisan mengenai bagaimana cara melakukan Disable terhadap Icon X pada jendela userform di excel.

Proses dari kode makro dibawah adalah User tidak akan bisa melakukan klik pada Icon X pada userform, dimana apabila Icon X tetap di klik, maka akan muncul sebuah pesan yang memberitahukan bahwa Icon X tidak bisa di klik.

selain pesan klik pada icon X juga bisa dimodifikasi sesuai perintah selanjutnya apabila Icon X di klik.

kodenya adalah :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
If CloseMode = vbFormControlMenu Then 
Cancel = True
MsgBox "Icon X... Tidak boleh di close"
End If
End Sub 

Demikianlah sehingga kode ini berakhir....
Next ...

MACRO MEMBUAT FORM LOGIN DAN REGISTER ANGGOTA DI EXCEL 23


Untuk mengisi waktu, karena suntuk dengan kerjaan, aku coba membuat makro excel, Form Login dan Register Anggota, prosesnya ketika file workbook dibuka, user diminta memasukkan nama dan password, apabila nama user belum ada di data anggota, maka user diharuskan mendaftarkan diri, status user sendiri ada dua pilihan, apakah sebagai admin atau hanya user saja.

Makro tersebut merupakan gabungan antara rumus di worksheet dan VBA Makro, untuk kode makronya mungkin terlalu panjang dan rada ruwet, jadi kalau ada yang ingin memberikan masukan... monggo.

Sedangkan kodenya seperti dibawah ini:

Private Sub UserForm_Activate()
Dim ws As Worksheet
ThisWorkbook.Application.Calculate
Set ws = Sheets("Password")
ws.Activate
ws.Range("A1:N50").Font.ColorIndex = 2
Range("B4").Select
LogNam.SetFocus
FrmDaf.Visible = False
End Sub

Private Sub Masuk_Click()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim ws2 As Worksheet
ThisWorkbook.Application.Calculate
Set ws = Sheets("Password")
Set ws1 = Sheets("Admin")
Set ws2 = Sheets("User")
ws.Range("E4").Activate
ActiveCell.Value = LogNam.Value
ActiveCell.Offset(0, 1) = LogPwd.Value
LogNam.Value = ""
LogPwd.Value = ""
LogNam.SetFocus
If Range("I4").Value = True Then
MsgBox "Nama Anda " & Range("E4") & " dan anda adalah " & Range("J4").Value
Me.Hide
Else
MsgBox "Nama Ama password salah... Kalau belum termasuk Anggota silahkan Daftar"
ws.Select
End If

If Range("J4").Value = "Admin" Then
ws1.Activate
ElseIf Range("J4").Value = "User" Then
ws2.Activate
Else
ws.Select
End If
LogNam.SetFocus
End Sub

Private Sub Daftar_Click()
FrmDaf.Visible = True
With Status
.AddItem "User"
.AddItem "Admin"
End With
End Sub

Private Sub Tambah_Click()
Dim Msg, Style, Title
Dim ws As Worksheet
ThisWorkbook.Application.Calculate
Set ws = Sheets("Password")
If DafNam.Value = "" Or DafPwd.Value = "" Or Status.Value = "" Then
MsgBox "Data harus diisi semua"
DafNam.Value = ""
DafPwd.Value = ""
Status.Value = ""
DafNam.SetFocus
Else
ws.Range("B4").Select
Do
If IsEmpty(ActiveCell) = False Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True
ActiveCell.Value = DafNam.Value
ActiveCell.Offset(0, 1) = DafPwd.Value
ActiveCell.Offset(0, 2) = Status.Value
If Range("N4").Value > 1 Then
MsgBox "Data sudah ada coba cari yang lain"
Range("B4").End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).ClearContents
DafNam.Value = ""
DafPwd.Value = ""
Status.Value = ""
DafNam.SetFocus
Else
Msg = "Nama Anda : " & DafNam.Value & " ,Password : " & DafPwd.Value & " , Coba Login"
Style = vbOKCancel + vbDefaultButton1
Title = "Konfirmasi"
Response = MsgBox(Msg, Style, Title)
If Response = vbOK Then
ws.Range("B4").Select
FrmDaf.Visible = False
LogNam.SetFocus
Else
Range("B4").End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).ClearContents
DafNam.Value = ""
DafPwd.Value = ""
Status.Value = ""
DafNam.SetFocus
End If
End If
End If
ws.Range("B4").Select
End Sub

Private Sub FrmDaf_Layout()
DafNam.Value = ""
DafPwd.Value = ""
Status.Value = ""
DafNam.SetFocus
End Sub

Untuk rumus di worksheet sendiri, merupakan rumus standar yaitu menggunakan vlookup dan gabungan text, serta rumus lainnya... lebih jauhnya... file bisa di DOWNLOAD disini

Update :
Postingan telah diupdate ke MEMBUAT FORM LOGIN DAN REGISTER ANGGOTA DI EXCEL, VERSI 2
Next ...

ANGKA MENJADI BILANGAN 11

Sekarang aku coba bikin tulisan lagi... mengenai makro excel... buat yang master punten nyak... bukan maksud hati bersombong ria... cuman catetan aja... daripada harus mikir lagi, bila ada case yang sama.


Makro ini merupakan pembuatan rumus yang berfungsi untuk mengubah angka menjadi bilangan, contohnya di cel A1 ada angka 1.000 dan akan berubah menjadi "seribu" dengan mengetikkan rumus =ambil(A1)di cell yang lain... begicuuu....ocreh deh langsung tancap kodenya...


Function ambil(ByVal nilai As Currency) As String
Dim satuan As Variant

satuan = Array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas")
Select Case nilai
        Case 0 To 11
            ambil = " " + satuan(Fix(nilai))
        Case 12 To 19
            ambil = ambil(nilai Mod 10) + " Belas"
        Case 20 To 99
            ambil = ambil(nilai / 10) + " Puluh" + ambil(nilai Mod 10)
        Case 100 To 199
            ambil = " Seratus" + ambil(nilai - 100)
        Case 200 To 999
            ambil = ambil(Fix(nilai / 100)) + " Ratus" + ambil(nilai Mod 100)
        Case 1000 To 1999
            ambil = " Seribu" + ambil(nilai - 1000)
        Case 2000 To 999999
            ambil = ambil(Fix(nilai / 1000)) + " Ribu" + ambil(nilai Mod 1000)
        Case 1000000 To 999999999
            ambil = ambil(Fix(nilai / 1000000)) + " Juta" + ambil(nilai Mod 1000000)
        Case Else
            ambil = ambil(Fix(nilai / 1000000000)) + " Milyar" + ambil(nilai Mod 1000000000)
    End Select
End Function


beres... caranya tinggal ketik aja rumusnya... yaitu =ambil(A1)... selesai

Next ...

SATU TOMBOL FUNGSI BERBEDA SETIAP KALI KLIK 6

Tulisan ini bukan bermaksud untuk sok tahu ataupun menggurui, tetapi dikarenakan beberapa patah kata dari isteri saya... bahwa saya ini pelupa... saya akui... ya... tetapi kita juga harus melihat pepatah bahwa manusia tidak luput dari lupa....bener ga ya... au.... Pada intinya tulisan ini hanya untuk mengingatkan saya saja... tetapi kalo mo liat boleh aja... kebetulan saya juga lagi belajar... jadi apabila ada kekurangan mohon dikoreksi. Makro ini kebetulan pernah saya pakai pada di salah satu tempat kerja saya dulu.... Ceritanya saya ingin melakukan hide dan unhide row yang berisi data laporan dari global ke detail, tetapi disini saya hanya menceritakan mengenai bagaimana command button tersebut bekerja, jadi tidak termasuk pembuatan laporannya... berabe ntar... langsung aja...
  1. Buka Excel tentunya, saat ini paling nyaman pake 2003.. klo menurutku...
  2. Buka Control Toolbox, yang bisa ditemui dengan klik kanan jendela window
  3. Kemudian buat comand button
  4. Klik kanan Command button tersebut untuk masuk ke jendela VBA Macro
  5. Copy deh kode di bawah ini ... dan liat hasilnya

Dim click As Boolean 'disiniliah inti dari perintah ini, yaitu mendefinisikan klik sebagai benar atau salah
   Sub CommandButton1_Click() 'perintah dari button
   click = Not click
      'kode dibawah adalah perintah pertama command button ketika di klik 
      If click Then 
         Range("7:34").Select
         Selection.EntireRow.Hidden = True 

      'dan ini adalah kondisi apabila command button di klik untuk yang kedua kali
     Else
        Range("7:34").Select
        Selection.EntireRow.Hidden = False
   End If
        Range("a1").Select 'sel a1 dipilih
End Sub

Hasil dari perintah di atas adalah apabila command button diklik untuk pertama kali maka
    Range("7:34") akan di hide
kemudian apabila command button diklik untuk kedua kali maka
   Range("7:34") akan di uhide


Begitulah cerita ini berakhir...
Next ...