【EXCEL VBAで覚えると便利なコードを紹介します】
① 指定したシートを作成する方法(ワークシートの複製)
② 指定されたシート内の特定の列で設定した文字列データの抽出(フィルタリング)します。
③ 指定されたシートで並び替え(ソート)を行います。
④ 指定された範囲内のセルを結合(マージ)します。
⑤ 指定されたシートにテキストボックスを作成します。
⑥ 指定された範囲内の条件に応じてセルの背景色や書式などを変更します。
① ThisWorkbook オブジェクトに “マスター” シートが存在すること。
② ThisWorkbook.Sheets.Count が有効な値を返していること。
③ ws.Copy メソッドが正常に実行されること。
'
'
Sub CopySheet() '指定するワークシートをコピーする
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("マスター") 'コピー(複製)するワークシート名を指定します。
ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '指定したワークシートをコピーします。
End Sub
'
'
'
Sub FilterData() '指定されたシート内の特定の列で設定した文字列データで抽出(フィルタリング)します。②
Dim ws As Worksheet
Dim Temp As Range
Set ws = ThisWorkbook.Sheets("データ") 'シートを指定します。「データ」を指定する・
Set Temp = ws.Range("A1").CurrentRegion 'シート「データ」のセル「A1」を起点に表の範囲を取得します。
With ws.Range(Temp.Address)
.AutoFilter '取得した表の範囲に対してオートフィルターを設定します。
.AutoFilter Field:=2, Criteria1:="ノートPC" '2列名:B列(品目)に対して「ノートパソコン」を抽出します。
End With
End Sub
'
'
'
Sub SortData() '指定されたシートで並び替え(ソート)を行います。
Dim ws As Worksheet
Dim Temp As Range
Set ws = ThisWorkbook.Sheets("売上") 'ソートするシートを指定します。「売上」を指定する。
Set Temp = ws.Range("A1").CurrentRegion 'シート「売上」のセル「A1」を起点に表の範囲を取得します。
With ws.Range(Temp.Address)
.Sort Key1:=.Range("C2"), Order1:=xlDescending, Header:=xlGuess 'ソートする対象列をC列「売上」に対して、降順に並び変えます。
End With
End Sub
'
【プログラム実行条件】 ① シート名: 「結合」という名前のシートが存在することを確認してください。存在しない場合は、正しいシート名に変更する必要があります。 ② 繰り返し処理: 「For I = 1 To ws.Cells(Rows.Count, “A”).End(xlUp).Row」という記述は、A列の最終行まで繰り返すということです。この最終行を確認してください。
③ 結合する範囲: 「ws.Range(“D” & I & “:E” & I).Merge」という記述は、D列とE列を結合するということです。この範囲が適切か確認してください。
④ 既存の結合セル: 結合されたセルをもう一度結合することはできません。このマクロを実行する前に、既存の結合セルがあるか確認してください。
'
'
Sub MergeCells() '指定された範囲内のセルを結合する
Dim ws As Worksheet
Dim I As Long
Set ws = ThisWorkbook.Sheets("結合") '結合するシートを指定します。シート「結合」を指定します。
For I = 1 To ws.Cells(Rows.Count, "A").End(xlUp).Row '結合する範囲を指定します。1行名からA列の最終行まで繰り返します。
ws.Range("D" & I & ":E" & I).Merge '指定した範囲内でD列とE列を結合します。
Next I
End Sub
'
【プログラム実行条件】
① シート名: “Text”というシートが存在することが前提となっています。このシート名が異なる場合は、コードを修正する必要があります。
② テキストボックスの位置とサイズ: (10, 10)から200×50ピクセルのテキストボックスが作成されます。この位置とサイズを変更する場合は、コードを修正する必要があります。
'
'
Sub CreateTextBox() '指定されたシートにテキストボックスを作成します。
Dim ws As Worksheet
Dim txtbox As Shape
Set ws = ThisWorkbook.Sheets("Text") 'テキストボックスを表示させるシートを指定します。「Text」を指定する。
Set txtbox = ws.Shapes.AddTextbox(msoTextOrientationHorizontal, 10, 10, 200, 50)
'テキストボックスの位置とサイズ: (10, 10)から200×50ピクセルのテキストボックスを作成します。
txtbox.TextFrame.Characters.Text = "テキストボックスに表示"
'テキストボックスの中に「テキストボックスに表示」を登録します。
End Sub
'
【プログラム実行条件】
① シート名: “書式”というシートが存在することが前提となっています。このシート名が異なる場合は、コードを修正する必要があります。
② 対象範囲: B2からB10のセルにのみ条件付き書式が適用されます。この範囲を変更する場合は、コードを修正する必要があります。
③ 条件と色: セル値が60より大きい場合に、セルの背景色を黄色に塗りつぶします。この条件や色を変更する場合は、コードを修正する必要があります。
'
'
Sub ConditionalFormatting() '指定された範囲内の条件に応じてセルの書式を変更
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("書式") '条件付き書式を設定する
With ws.Range("B2:B10") '条件付き書式の設定範囲を行います。
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="60" '設定範囲で60を超える数値に対して背景色を付けます。
.FormatConditions(.FormatConditions.Count).Interior.Color = RGB(255, 255, 0) '該当するセルの背景色を黄色に塗りつぶします。
End With
End Sub
'
'