背景
課題として検索ツールの作成が出されたので、今までVBA・マクロは全く触って来なかったんですが、なんとか完成しました。 今回は、その備忘録です。
目的
別シートの顧客リストから、名前検索して指定した項目のみを抽出させる
準備
1枚目のシート→【顧客リスト】 2枚目のシート→【検索ツール】
【検索ツール】の名前を記入するところは、セルの名を定義する。
例)D3 → 氏名
VBA
Option Explicit ←決まり文句
Sub 名前検索() ←マクロの名前決め
Dim 氏名 As String
Dim Count As Long
'入力した値の取得
氏名 = Sheets("【検索ツール】").Range("氏名")
'もし入力されていたら
If 氏名 <> "" Then
'検索結果のクリア
Sheets("【検索ツール】").Range("C86").CurrentRegion.ClearContents
'【顧客リスト】にフィルターをかける
With Sheets("【顧客リスト】")
.Range("A1").AutoFilter Field:=2, Criteria1:=氏名
End With
'もし入力された値のデータがない、間違いがある場合
If Sheets("【顧客リスト】").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then
'エラーの表示
MsgBox "データがない、もしくは名前が間違っています"
'もしデータがあったら
Else
With Sheets("【顧客リスト】")
'コピー
.Range("D:G,M:N").Copy
'ペースト
Sheets("問題").Range("C83").PasteSpecial
Range("C83:H83").Interior.Color = RGB(250, 241, 211)
'フィルター解除
.Range("A1").AutoFilter
End With
End If
'入力されてない場合
Else
MsgBox "氏名を入力してください", vbExclamation
End If
End Sub
後日談
これエクセルでしかできないんですな。 家でできなかったからネットカフェで泣きながら2日かけて作成したげな。 嘘。楽しかったです。