実用マクロ集

 

SCマクロ

Sub 指定範囲をクリア()
Selection.Clear
End Sub
Sub 最終行へ()
Cells(Rows.Count, Selection.Column).End(xlUp).Select
End Sub

 

マクロ集


'最終行の取得
Sub 最終行()
Cells(Rows.Count, 1).End(xlUp).Row
End Sub

'メッセージボックス
MsgBox "おはよう", vbOKCancel, "タイトル"

'インプットボックス
Dim a As String
a = InputBox("何か入力して下さい。", "タイトル", "デフォルト文字列")

'小数点2桁固定の書式設定
Range.NumberFormatLocal = "0.00"

'セルを結合して中央揃え
Range("セル範囲").HorizontalAlignment = xlCenter
Range("セル範囲").MergeCells = True

'フォントの色を赤に
Range("セル範囲").Font.Color = vbRed

'セルを塗りつぶす
Range("セル範囲").Interior.Color = vbRed

'セル範囲に格子枠線
Range("セル範囲").Borders.LineStyle = xlContinuous

'セル範囲の外枠に枠線
Range("セル範囲").BorderAround _
LineStyle:=xlContinuous, Weight:=xlMedium, Color:=vbRed

'ブック、シートを指定
Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1") = "文字"

'セルのコピペ
Sheets("Sheet1").Range("A1").Copy Sheets("Sheet2").Range("A1")

'値のみ貼り付け
Worksheets("Sheet1").Range("A1:B10").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial _
Paste:=xlPasteValues

'書式設定VBA関数
MsgBox Format(Cells(1, 1), "yyyy年mm月dd日")

'置換
MsgBox Replace("123aAbBcC", "A", "Z") '123aZbBcCになる

'文字位置検索
MsgBox InStr("123aAbBcC", "A") '5になる

'ワークシート関数を使用
Range("B1") = WorksheetFunction.CountA(Columns(1))

'全てのワークシートを印刷
Dim ws As Worksheet
For Each ws In Worksheets
ws.PrintPreview
Next ws

'ワークブックを開く
Dim wb As Workbook
Set wb = Workbooks.Open(FileName:="C:\User\sample.xls")

'ウインドウ枠の固定
Workbooks("Book1.xls").Worksheets("Sheet2").Activate
Range("B2").Select
ActiveWindow.FreezePanes = True

'プリンターを指定して印刷
Worksheets(1).PrintOut ActivePrinter:="プリンター名"

'ファイルを指定して開く
Dim FileName As Variant
FileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*")
If FileName = False Then
Exit Sub
End If
Workbooks.Open FileName

'印刷ダイアログを開く
Dim rtn As Boolean
Sheets(1).Select
rtn = Application.Dialogs(xlDialogPrint).Show
Select Case rtn
Case True
MsgBox "印刷されました。"
Case False
MsgBox "印刷がキャンセルされました。"
End Select

'セル範囲のリサイズ
Range("A1:A3").Resize(, 3).Select
'A1: A3セル範囲を、3列に変更し、A1: C3セル範囲に

'セル範囲のオフセット
Range("A1").Offset(3, 3).Select
'A1セルを、行方向に3、列方向に3移動した、D4セルに

 

高速化マクロ

'以下、下記のコードのことを「高速化基本マクロ」と呼ぶ。
Sub appSet()
'マクロ処理中に、描画など余計なものを省略して高速化
With Application
.ScreenUpdating = False '描画を省略
.Calculation = xlCalculationManual '手動計算
.DisplayAlerts = False '警告を省略。
.EnableEvents = False 'DisplayAlertsよりこちらを設定した方が良い?
End With
End Sub

Sub appReset()
'描画などの設定をリセット
With Application
.ScreenUpdating = True '描画する
.Calculation = xlCalculationAutomatic '自動計算
.DisplayAlerts = True '警告を行う
End With
End Sub