Excel VBA スニペット

'Form01を開く
Form01.Show 'デフォルトでモーダル(vbModal)・・・閉じるまでExcel操作不可

Form01.Showvb Modeless ’Excel操作可能

'Form01を閉じる
Unload Form01

'条件を満たすまで 前判定
Dim n As Long
n = 1
Do Until n > 5
    Debug.Print n
    n = n + 1
Loop

'条件を満たすまで 後判定
n = 1
Do
    Debug.Print n
    n = n + 1
Loop Until n > 5
'条件を満たす間まで 前判定
Dim n As Long
n = 1
Do While n < 5
    Debug.Print n
    n = n + 1
Loop

'条件を満たす間まで 後判定
n = 1
Do
    Debug.Print n
    n = n + 1
Loop While n < 5
’標準
Rangeオブジェクト.NumberFormatLocal = "G/標準"

'文字列
Rangeオブジェクト.NumberFormatLocal = "@"

’数値
Rangeオブジェクト.NumberFormatLocal = "0"
'行選択 2行目から3行目
Range("2:3").Select

'行選択 2行目から3行目
Rows("2:3").Select

'B列からC列
Range("B:C").Select

'B列からC列
Columns("B:C").Select
'セル範囲【B2:D3】
Range("B2:D3").Select
 
'セル範囲【B2:D3】
Range("B2", "D3").Select

'セル【B2】と【D3】
Range("B2,D3").Select

'ブック確認
Sub 対象ブックが存在するか確認_D()
    Dim filePath As String
    filePath = "C:\Sample\Book1.xlsx"
    
     If Dir(filePath)  "" Then
        Debug.Print "存在する"
    Else
        Debug.Print "存在しない"
    End If
End Sub
Sub 対象ブックが存在するか確認_Fso()
    Dim fso As Object
    Dim filePath As String
    filePath = "C:\Sample\Book1.xlsx"
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If fso.FileExists(filePath) Then
        Debug.Print "存在する"
    Else
        Debug.Print "存在しない"
    End If
End Sub

Sub シートの存在確認()
    Dim ws As Worksheet
    Dim flag As Boolean
    For Each ws In Worksheets
        If ws.Name = "〇〇" Then
            flag = True
        End If
    Next ws
    If flag Then
        MsgBox "「〇〇」シートあり"
    Else
        MsgBox "「〇〇」シートなし"
    End If
End Sub
' シート存在確認
Public Function ExistsSheet( _
        ByVal sheetName As String, _
        Optional ByVal wb As Workbook = Nothing _
    ) As Boolean
    
    Dim ws As Worksheet
    
    If wb Is Nothing Then Set wb = ThisWorkbook
    
    For Each ws In wb.Worksheets
        If StrComp(ws.Name, sheetName, vbTextCompare) = 0 Then
            ExistsSheet = True
            Exit Function
        End If
    Next
    
    ExistsSheet = False
End Function
Sub ブックが開いているか確認()
    Dim wb As Workbook
    Dim flag As Boolean
    For Each wb In Workbooks
        If wb.Name = "Book1.xlsx" Then
            flag = True
        End If
    Next wb
    If flag Then
        MsgBox "Book1 は開いている"
    Else
        MsgBox "Book1 は開いてない"
    End If
End Sub

'「temp」シートを末尾に移動
  Worksheets("temp").Move after:=Worksheets(Worksheets.Count)
'「abc」シートを削除
  Application.DisplayAlerts = False
  Worksheets("abc").Delete
  Application.DisplayAlerts = True
  'Sheet1シートの前に「data」シートをコピー
  Worksheets("data").Copy Before:=Worksheets("Sheet1")

  'アクティブシートの一つ前にシートを追加
  Worksheets.Add

  '先頭に追加
  Worksheets.Add Before:=Sheets(1)

  '末尾に追加
  Worksheets.Add After:=Sheets(Worksheets.Count)

’並べ替え 
Range("セル範囲").Sort _
    Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

Range.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

Key1:最初の並べ替えフィールドを範囲名 (文字列) またはRangeオブジェクトで指定
Order1:xlAscending (昇順・既定値) / xlDescending (降順)
Header:xlNo (見出しなし・既定値) / xlYes (見出しあり)

前の設定(ワークシートで手作業でやった並べ替えのオプションも含む)が引き継がれるオプション
MatchCase/Orientation/SortMethodなど

' 重複データの削除 指定列 1列名
  Range("セル範囲").RemoveDuplicates Columns:=1, Header:=xlNo
  
' 重複データの削除 指定列 複数
  Range("セル範囲").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo

Columns:重複をチェックする列の指定
Array 関数を使用して複数の列を指定(組み合わせで重複をチェック)

重複の判定は指定した列での完全一致

Header:ヘッダーがある場合、xlYes、ヘッダーがない場合、xlNoを指定

'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'★ 最後の「_」より後の文字を取り出す
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Function zfSliceRearStrRevUs(ByVal tStr As String) As String
    zfSliceRearStrRevUs = Mid(tStr, InStrRev(tStr, "_") + 1)
End Function
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'★ 最初の「_」より後ろの文字列を取り出す
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Function zfSliceRearStrUs(ByVal tStr As String) As String
    zfSliceRearStrUs = Mid(tStr, InStr(tStr, "_") + 1)
End Function

'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'★ ファイルパス・ファイル名から拡張子のみを取り出す
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Function zfSliceFileNameExt(ByVal fName As String) As String
    zfSliceFileNameExt = Mid(fName, InStrRev(fName, ".") + 1)
End Function

'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'★ ファイル名から拡張子なしのファイル名の取り出す
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Function zfSliceFileNameNoExt(ByVal fName As String) As String
    Dim extName As String
    extName = Mid(fName, InStrRev(fName, "."))
    zfSliceFileNameNoExt = Replace(fName, extName, "")
End Function
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'★ ファイルパスからファイル名(拡張子あり)を取り出す
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Function zfSliceFileName(ByVal filePath As String) As String
    zfSliceFileName = Mid(filePath, InStrRev(filePath, "\") + 1)
End Function

'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'★ 全角半角のスペースを取り除く
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Function zfDeleteSpace(ByVal tStr As String) As String
    Dim resStr As String
    resStr = Replace(tStr, " ", "")
    resStr = Replace(resStr, " ", "")
    zfDeleteSpace = resStr
End Function

'新たなイベント発生の抑制------
Application.EnableEvents = False

'元に戻す------
Application.EnableEvents = True
'手動計算
Application.Calculation = xlCalculationManual

'再計算の実行
Application.Calculate 

'自動計算
Application.Calculation = xlCalculationAutomatic
'計測開始
    Dim myspeed As Double
    Dim starttime As Double
    starttime = Timer
'---------------------------

'計測終了
   myspeed = Timer - starttime
   Debug.Print "処理時間:" & myspeed & ""
'---------------------------

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject") 
'上書き保存
Workbooks("Dummy.xlsx").Close SaveChanges:=True

'保存せずに保存
Workbooks("Dummy.xlsx").Close SaveChanges:=False
'指定したブックを開く(ドライブ名・・・拡張子)
Workbooks.Open Filename:="C:\・・・\test.xlsx"

'指定したブックを開き、オブジェクト指定
Dim wb as As Workbook
Set wb1 = Workbooks.Open(Filename:="C:\・・・\test.xlsx")

'最終行を取得する(A列を基準)
dim cnt as long
cnt = Cells(Rows.Count, 1).End(xlUp).Row
又は
cnt = Cells(Rows.Count, "A").End(xlUp).Row

’最終列を取得する(1行目を基準)
cnt=cells(1,Columns.Count).End(xlToLeft).Column

'警告メッセージの停止
Application.DisplayAlerts = False

'警告メッセージを通常表示
Application.DisplayAlerts = True
'1秒間処理を中断する
Application.Wait Now + TimeValue("00:00:1")
Application.ScreenUpdating = False
Application.ScreenUpdating = True