このエントリーをはてなブックマークに追加 Share on Facebook

Excel VBA Codes

日々の業務でよく使いそうなExcelVBAのコードスニペットをまとめています。逆引きレファレンスというよりは、ユースケースライクな単位での記述をしていきます。

「表紙」シートのA1を選択してページ設定を横1に設定する
With ActiveWorkbook.Sheets("表紙")
    .Select                             'シート選択
    .PageSetup.Zoom = False             'ズームなし
    .PageSetup.FitToPagesWide = 1       '横1 ×縦なし
    .PageSetup.FitToPagesTall = False
    .Cells(1, 1).Activate               'A1セルを選択(シート選択を先にしておく)
End With
「テストケース」を含むシートの列幅、行タイトル、印刷品質を設定する
Dim sheet As Worksheet

For Each sheet In ActiveWorkbook.Sheets
    Call sheet.Select
    'シート名にテストケースを含むか?
    If InStr(1, sheet.Name, "テストケース") > 0 Then
        'AからZ列までの列幅を12へ設定
        sheet.Range("A:Z").Columns.ColumnWidth = 12
        'ページ設定の行タイトルを$1:$10へ設定
        sheet.PageSetup.PrintTitleRows = "$1:$10"
        '印刷品質を300dpiへ設定
        sheet.PageSetup.PrintQuality = 300
    End If
Next
'最後に「表紙」シートを選択
Call ActiveWorkbook.Sheets("表紙").Select
A1からB1のセルを結合して、縮小して全体を表示する
With ActiveSheet.Range("A1:E1")
    .MergeCells = True   'セルを結合する
    .ShrinkToFit = True  '縮小して全体を表示する
End With
すべてのデータソースリンクを削除する
Dim links As Variant
Dim link As Variant

links = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(links) Then 'リンクがない場合はNothingとなるためチェック要
    For Each link In links
        Call ActiveWorkbook.BreakLink(link, xlLinkTypeExcelLinks)
    Next
End If
正規表現を利用する
Dim re As Object

Set re = CreateObject("VBScript.RegExp")
With re
    'マッチするか
    .Pattern = "\d+_\d+\ .*"
    Debug.Print .test("1_1 テストケース1") '->True
    Debug.Print .test("1-1 テストケース1") '->False
   
    '置換
    .Pattern = "(テストケース)(\d+)"
    Debug.Print .Replace("1-1 テストケース1", "TestCase$2") '->1-1 TestCase1
End With
Excel2007以降とそれより前でブック保存処理を分岐する
If Val(Application.Version) < 12 Then
    'Excel2003以下
    ActiveWorkbook.SaveAs fileName:=fileName
    ActiveWorkbook.Close SaveChanges:=False
Else
    'Excel2007以降
    ActiveWorkbook.SaveAs fileName:=fileName, FileFormat:=56
    ActiveWorkbook.Close SaveChanges:=False
End If
1行目が特定の値の場合に、その列を複数選択する
Dim i As Integer
Dim colRange As range
Dim ws As Worksheet

Set ws = ActiveSheet

With ws
    For i = 1 To .UsedRange.End(xlToRight).Column
        With .Cells(1, i)
            '1行目の値がhogeの場合
            If .Value = "hoge" Then
                If colRange Is Nothing Then
                    Set colRange = .EntireColumn
                Else
                    Set colRange = Union(colRange, .EntireColumn)
                End If
            End If
        End With
    Next
   
    If Not colRange Is Nothing Then
        '複数列を選択
        Call colRange.Select
    End If
End With
Python Link
Sponser
ITPro News
@IT News
License
Creative Commons License
このサイトにおける作品は、原則としてクリエイティブ・コモンズ・ライセンスの下でライセンスされています。なお、個別にライセンスを設定している場合はそのライセンスに従います。
Sponser

sponser
MOONGIFT News
Lifehack News
Codezine News
Powerd By
SOY CMS
Valid XHTML 1.0 Transitional