75299


`wItem(i) = FoundCell.Offset(i + 1,
0).Value`の部分で機能プログラム名の値は、取得されて表示されたのですが、この、値を取得する処理をもう3件追加したいです。参照するエクセルは同じなのですが、取得したいセルの位置はそれぞれ異なります。どのようにしたらうまくいくでしょうか。

[code]

        Sub 単体テスト仕様書マクロ()
    Dim wFile       As String
    Dim wFilePath   As String
    Dim i           As Long
     
    'Excelファイルが存在していたらファイル名を返す
    wFile = Dir(ActiveWorkbook.Path & "\*.xlsx")
     
    '先頭行を指定
    i = 2
     
    'カレントディレクトリに存在するExcelファイルを全て読み込む
    Do While wFile <> ""
         
        '開くExcelファイルのフルパスを取得
        wFilePath = ActiveWorkbook.Path & "\" & wFile
         
        '機能（ﾌﾟﾛｸﾞﾗﾑ）名・テスト件数・完了数・不具合件数を取得し配列に格納する（区切り文字：|）
        strData = Split(File_Load(wFilePath), "|")
         
        '機能（ﾌﾟﾛｸﾞﾗﾑ）名
        Cells(i, 1) = strData(0)
         
        'テスト件数
        Cells(i, 3) = strData(1)
         
        '完了数
        Cells(i, 5) = strData(2)
        
        '不具合件数
        
        Cells(i, 7) = strData(3)
          
         
        '次のExcelファイルを取得
        wFile = Dir()
         
        '行数をカウント
        i = i + 1
     
    Loop
     
        MsgBox "完了"
    End Sub
    
    Function File_Load(ByVal wFilePath As String) As String
    
        Dim wb          As Workbook
        Dim wItem       As Variant
        Dim i           As Long
        Dim FoundCell   As Object
    
        Set wb = Workbooks.Open(wFilePath)
    
        wItem = Array("機能（ﾌﾟﾛｸﾞﾗﾑ）名", "テスト件数", "完了数", "不具合件数")
    
        For i = LBound(wItem) To UBound(wItem)
    
            Set FoundCell = wb.Worksheets(1).Cells.Find(What:=wItem(i))
    
            If FoundCell Is Nothing Then
                wItem(i) = ""
            Else
                wItem(i) = FoundCell.Offset(i + 1, 0).Value
            End If
    
        Next i
    
        wb.Close SaveChanges:=False
    
        File_Load = Join(wItem, "|")
    
    
    End Function
    
[/code]

[![機能プログラム名だけは取得できたのですが、ほかの３つも同様の処理で取得したいです。](https://i.stack.imgur.com/hknzK.png)](https://i.stack.imgur.com/hknzK.png)


CC BY-SA 4.0
2021-04-15T02:40:29.243
75284
2021-04-15T06:28:40.820
2021-04-15T02:45:57.833
4236
44819
question
vba
値を取得するコードを追加したい


`File_Load`ファンクションの下記を直してみてください。

[code]

    Else
        ' wItem(i) = FoundCell.Offset(i + 1, 0).Value '修正前
        wItem(i) = FoundCell.Offset(1, 0).Value       '修正後
    End If
    
[/code]

[Findメソッド](https://docs.microsoft.com/ja-
jp/office/vba/api/excel.range.find)は値の見つかった範囲(`Range`)を返しますので、そこからの相対位置を取得しなければいけません。  
つまり`wb.Worksheets(1).Cells.Find(What:="テスト件数")`とした場合は、"テスト件数"が見つかった`B1`などがFoundCellに入ります。  
なので`B1`に対して`Offset(1, 0)`を指定することで`B2`の値を読み取ることができます。


CC BY-SA 4.0
2021-04-15T06:28:40.820
75299
2021-04-15T06:28:40.820
9820
75284
answer