koleksi macro dasar excel

Upload: deanz75

Post on 02-Jun-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 Koleksi Macro Dasar Excel

    1/6

    Koleksi Macro Dasar Excel

    Tulisan berikut ini merupakan terjemahan darihttp://www.panzerbasics.com/index_files/97-

    excel/basic-macros.htm

    Sebagai pemrogram VBA pemula, saya perlu mengumpulkan macro yang saya buat atau temukan.Menaruhnya di Internet hanyalah sebuah langkah lanjutan kecil.

    Jika anda menjalankan sebuah macro, aksinya tidak bisa dibatalkan. Menggunakan macro yang

    disediakan di sini adalah urusan anda sendiri.

    Camkanlah bahwa macro bisa sangat bermanfaat, namun juga bisa berbahaya jika berasal dari

    sumber yang tidak dikenal.

    Code-code macro dasar berikut ini berasal dari seantero Internet atau dibuat oleh saya sendiri. Oleh

    karena sangat umum dan dasar, saya tidak mencantumkan sumbernya. Jika seseorang mengenalnya

    sebagai buatannya dan ingin namanya dicantumkan atau code dihapus, silahkan menghubungi saya.

    Macro yang disediakan berikut ini adalah pilihan saya dan bisa digunakan sebagai permulaan atau

    untuk membantu anda pada proyek-proyek dasar. Gunakan imajinasi anda untuk menyesuaikannya

    dengan proyek anda, atau lakukan pencarian lebih lanjut di Internet.

    Code-code sudah saya coba dan verifikasi untuk dijalankan pada Excel 2007. Harap diingat bahwakita bisa mencapai suatu tujuan dengan cara yang berbeda.

    Macro umumnya dimulai dengan baris: "Sub Name()", dimana Name bisa diganti dengan nama yang

    ingin anda gunakan. Macro diakhiri dengan baris "End Sub".

    Untuk kejelasan dan kemudahan dalam pemakaian yang berbeda, saya tidak mencatumkan baris-

    baris ini lagi kecuali untuk alasan tertentu.

    Jika "Sub" diganti dengan "Function", code akan berjalan sama saja, namun macro tidak tampak

    pada daftar macro yang tersedia. Kelemahan cara ini adalah function akan tampak dalam daftar

    function. Jika "Private" ditambahkan sebelum "Sub" atau "Function", macro hanya bisa dipanggil dari

    module yang sama, dan juga tidak muncul dalam daftar.

    Activate

    Sub Worksheet_Activate()

    MsgBox "Hello"

    End Sub

    Active Cell, Position myRow = ActiveCell.Row

    myCol = ActiveCell.Column

    http://www.panzerbasics.com/index_files/97-excel/basic-macros.htmhttp://www.panzerbasics.com/index_files/97-excel/basic-macros.htmhttp://www.panzerbasics.com/index_files/97-excel/basic-macros.htmhttp://www.panzerbasics.com/index_files/97-excel/basic-macros.htmhttp://www.panzerbasics.com/index_files/97-excel/basic-macros.htmhttp://www.panzerbasics.com/index_files/97-excel/basic-macros.htm
  • 8/10/2019 Koleksi Macro Dasar Excel

    2/6

    MsgBox myRow & "," & myCol

    Active Cell, Selection

    to far left

    Selection.End(xlToLeft).Select

    OR

    Range("A" & ActiveCell.Row).Select

    Active Cell in top left

    of screen

    With ActiveWindow

    .ScrollColumn = ActiveCell.Column

    .ScrollRow = ActiveCell.Row

    End With

    Active Cell, Value MsgBox ActiveCell.Value

    Auto Run

    Sub Auto_Open()

    MsgBox "Hello"

    End Sub

    Auto Run(2)

    Sub Workbook_Open()

    MsgBox "Hello"

    End Sub

    Auto Save

    This workbook:' = Autorun

    Sub Workbook_Open()

    Call SaveMe

    End Sub

    In Module:

    Sub SaveMe()

    ThisWorkbook.Save

    Application.OnTime Now + Timeserial(0,15,0),"SaveMe" '

    Timeserial=(h,m,s)End Sub

    Available Row (next)Range("a65536").End(xlUp).Offset(1, 0).Select

    Call -

    Running a

    subroutine

    Call Macro2 'This calls for Macro2 to run within your Macro

  • 8/10/2019 Koleksi Macro Dasar Excel

    3/6

    Case Title

    Dim cell As Range

    For Each cell In Selection.Cells

    If cell.HasFormula = False Then

    cell = Application.Proper(cell)

    End IfNext

    Case Upper / Lower

    Dim cell As Range

    For Each cell In Selection.Cells

    If cell.HasFormula = False Then

    cell = UCase(cell)

    End If

    Next

    Column Letters

    Dim MyColumn As String, Here As String

    Here = ActiveCell.Address

    MyColumn = Mid(Here, InStr(Here, "$") + 1, InStr(2, Here, "$") - 2)

    MsgBox MyColumn

    Counting Rows &

    Columns

    myRows = Selection.Rows.Count

    myColumns = Selection.Columns.Count

    MsgBox "Rows = " & myRows & vbCrLf & "Colums = " & myColumns

    Carriage Return MsgBox "Line 1" & vbCrLf & "Line 2"

    Copy Range (1) Sheet1.Range("A1:C1").Copy Destination:=Sheet2.Range("A1")

    Copy Range (2)

    Range("A1:B1").Copy

    Range("A2").PasteSpecial Paste:=xlPasteValues

    Application.CutCopyMode = False

    Counter

    Range("A1") = Range("A1") + 1

    OR

    myCount = Range("a1") + 1

    Range("a1") = myCount

    Current DatePrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As

    Boolean)

    Range("A1") = Now

  • 8/10/2019 Koleksi Macro Dasar Excel

    4/6

    End Sub

    Delete Empty Rows

    firstRow = Selection.Row

    lastRow = Selection.Row + Selection.Rows.Count

    For rownumber = lastRow To firstRow Step -1If Application.WorksheetFunction.CountA(Rows(rownumber)) = 0 _

    Then Rows(rownumber).Delete

    Next rownumber

    Error Trapping

    On Error Resume Next

    OR

    Sub Name()

    On Error Goto ErrorHandler1

    ... more lines of code

    Exit Sub

    ErrorHandler1:

    ... code specifying action on error

    End Sub

    File Name & Path Range("A1") = Application.ActiveWorkbook.FullName

    For, Next Loop

    Goto (Code)

    Input Box

    Dim MyInput

    MyInput = InputBox("Enter something")

    Range("A1") = MyInput

    If, Then Statement

    If Range("B1") > 10 Then

    Range("B2") = 10ElseIf Range("B2") > 5 Then

    Range("B2") = 5

    Else

    Range("B2") = 1

    End If

    Joining Text

    myCol = Selection.Columns.Count - 1

    n = 0

    For n = 0 To Selection.Rows.Count - 1

    For i = 1 To myCol

  • 8/10/2019 Koleksi Macro Dasar Excel

    5/6

    ActiveCell.Offset(n, 0) = ActiveCell.Offset(n, 0) & ActiveCell.Offset(n,

    i)

    ActiveCell.Offset(n, i) = ""

    Next i

    Next n

    Message Box

    MsgBox "Created by: Your Name here"

    MsgBox "Different Icon", vbInformation

    MsgBox "Different Icon And Title", vbExclamation, "Your warning

    message"

    Modeless Forms UserForm.show vbModeless

    Moving the Cursor ActiveCell.Offset(1, 0).Select

    Protecting /

    Unprotecting a sheet

    'Protect

    Dim Password

    Password = "xxxx"

    ActiveSheet.Protect Password, True, True, True

    'Unprotect

    Password = "xxxx"

    ActiveSheet.Unprotect Password

    Random numbersMyNumber = Int((10 - 1 + 1) * Rnd + 1)

    Range("A1") = MyNumber

    Rounding Numbers ActiveCell = Application.round(ActiveCell, 2)

    Saving your

    WorkbookActiveWorkbook.Save

    ScreenUpdating Application.ScreenUpdating = False / True

    Select Case

    statement

    Select Case Range("A1").Value

    Case 100, 150 ' = 100 OR 150

    Range("B1").Value = Range("A1").Value

    Case 200 To 300, 400 To 500 ' = Between 200 and 300 OR between 400

    and 500

    Range("B2").Value = Range("A1").Value

    Case Else

    Range("B1").Value = 0

  • 8/10/2019 Koleksi Macro Dasar Excel

    6/6

    End Select

    Select Data Range

    Dim myLastRow As Long

    Dim myLastColumn As Long

    Range("A1").SelectOn Error Resume Next

    myLastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row

    myLastColumn = Cells.Find("*", [A1], , , xlByColumns,

    xlPrevious).Column

    myRange = "a1:" & Cells(myLastRow, myLastColumn).Address

    Range(myRange).Select

    Sheets Hiding Sheet1.Visible = xlSheetVeryHidden

    Text Edit

    MsgBox Left("abcd", 2) 'Displays 2 characters from Left

    MsgBox Right("abcd", 2) 'Displays 2 characters from Right

    MsgBox Len("abcd") 'Displays number of characters (Including

    space)

    TimerApplication.Wait Now + TimeValue("00:00:05")

    MsgBox ("This was a 5 second delay")

    Time last save

    MsgBox Excel.Application.ThisWorkbook.BuiltinDocumentProperties("Last

    Save Time")

    vbYesNo

    YesNo = MsgBox("This macro will ... Do you want to continue?", vbYesNo

    + vbCritical, "Caution")

    Select Case YesNo

    Case vbYes

    'Insert your "Yes" code here.

    Case vbNo

    'Insert your "No" code here.

    End Select

    http://www.blogger.com/email-post.g?blogID=287256040624724770&postID=7269852479164774167