VBA(Visual Basic for Applications)を使用して、特定の工事名に基づいて工期末を抽出する方法を解説します。特に、C列の工事名に基づき、F列の工期末を抽出するための基本的な方法について説明します。
1. プログラムの目的と背景
このVBAコードの目的は、ユーザーが指定した工事名に基づいて、その工期末を抽出し、結果を新しいシートに出力することです。ユーザーは入力ボックスを使用して検索する工事名を指定し、その工事名が含まれている行の工期末を抽出します。
2. 問題の理解
質問者は、`resultSheet.Cells(r, 3).Value = cell.Value` の部分を変更して、工期末を正しく抽出したいと考えています。この部分は、現在、工事名が一致した場合に工事名を抽出している部分です。質問者はこの部分を工期末を抽出するために変更したいと考えています。
3. 解決方法
問題を解決するには、`F列`にある工期末を抽出するために、`F列`の値を`resultSheet`の3列目に正しく代入する必要があります。以下のように修正することで、工期末を正しく抽出できます。
If InStr(cell.Value, searchKeyword) > 0 Then
' 結果の追加
resultSheet.Cells(r, 1).Value = ws.Name & "!" & cell.Address
resultSheet.Cells(r, 2).Value = cell.Value
resultSheet.Cells(r, 3).Value = ws.Cells(cell.Row, 6).Value ' F列(工期末)を抽出
resultSheet.Hyperlinks.Add Anchor:=resultSheet.Cells(r, 4), Address:="", _
SubAddress:=ws.Name & "!" & cell.Address, TextToDisplay:="移動"
r = r + 1
End If
上記の修正では、`ws.Cells(cell.Row, 6).Value`で`F列`の工期末を取得し、`resultSheet.Cells(r, 3).Value`に代入しています。このように修正することで、工期末が正しく抽出されます。
4. コードの説明
この修正では、`F列`の工期末を取得するために、`ws.Cells(cell.Row, 6).Value`を使用しています。`cell.Row`は一致した工事名が含まれる行を示し、その行の`F列`の値を取得しています。
5. まとめ
このVBAプログラムを編集することで、ユーザーが指定した工事名に基づいて、正しい工期末を抽出することができます。コードを適切に修正することで、目的に合った結果を得ることができます。VBAを使ったデータ処理は非常に強力で、必要に応じて柔軟に変更が可能です。


コメント