VBA よく使うコードまとめ


VBA よく使うコードまとめ

ExcelのVBAのよく使うコードをまとめてみました。広く浅くプログラムしていると、久しぶりにマクロを使ってみるとFor文も書けなくなることがあり。とりあえずまとめてみました。


以下の表をSheet1のA1からコピペしてください

One Two Three 検索
5 10 21 5
5 9 28
4 8 25
4 7 24
3 6 23
3 5 22
2 4 26
2 3 27
2 2 29

次のコードをマクロに記述してください

VBAお品書き

  • 範囲選択
  • 2条件並べ替え
  • 空セルOkの最下のセル取得、空セルOkの最も右のセル取得
  • 範囲からの検索
  • シートを別のブックに保存(マクロをはずす)
'==範囲の選択の書き方 コピー==================
Sub RangeCopy()
    With Worksheets("Sheet1")
        .Range(.Cells(1, 1), .Cells(10, 4)).Copy
    End With
    ThisWorkbook.Worksheets("Sheet1").Cells(1, 5).PasteSpecial Paste:=xlValue
End Sub
'==2条件並び替え=2003バージョン=======
Sub fill()
    Application.ScreenUpdating = False 'ちらつき防止
    With ThisWorkbook.Worksheets("Sheet1")
        .Range(.Columns(1), .Columns(3)).Sort _
        Key1:=.Range("A1"), Order1:=xlAscending, _
        Key2:=.Range("B1"), Order2:=xlAscending, _
        Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
    End With
    Application.ScreenUpdating = True
    
End Sub
'==最下のRow,最右のColumn (空白OK)====
Sub GetRowCol()
Dim maxrow As Integer
Dim maxcol As Integer
    With ThisWorkbook.Worksheets("Sheet1").UsedRange
            maxrow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
            maxcol = .Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
    End With
    
    MsgBox ("最下の行は " & maxrow & " です" & vbCrLf & "最も右の列は " & maxcol & " です")
End Sub
'== おまけ==================
Sub CleanUp()
    With Worksheets("Sheet1")
        .Range(.Cells(1, 5), .Cells(10, 8)).Copy
    End With
    ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).PasteSpecial Paste:=xlValue
    
    With Worksheets("Sheet1")
        .Range(.Cells(1, 5), .Cells(10, 8)).ClearContents
    End With
    
End Sub
'==検索==================
Sub serch()
Dim searchResult As Range
    myf = ThisWorkbook.Worksheets("Sheet1").Cells(2, 4).Value
  
    With Worksheets("Sheet1")
        Set searchResult = .Range("A1:C10").Find(myf, LookIn:=xlValues, LookAt:=xlWhole)
    End With
   
    If searchResult Is Nothing Then
        '検索でなければ
    Else
        MsgBox ("合致あり")
    End If
End Sub
'==アクティブsheetを名前を付けて保存====
Sub SheetSave()
Dim path As String
path = ThisWorkbook.path
Dim fname As String
fname = "name"
    Application.DisplayAlerts = False 'アラート OFF
    fname = path & "\" & fname & ".xls"
    ThisWorkbook.ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=fname
    ActiveWorkbook.Close
    
    Application.DisplayAlerts = True
End Sub
logo