|
色々試してみて試行錯誤をし、サーチエンジンで検索もしたのですが、分からなくお力をお借りしたく質問させて頂いています。
一度は出来上がったコードだと思ったのですが、想定とは違った結果になってしまいました。
検証を行った結果、Findでの検索の範囲をシート全体としていた為想定とは違った列の値がかえってきているのが原因と分かりました。
検索の範囲を指定すればうまくいくだろうと思い
Set Obj = Worksheets("シフト").Cells.Find(day, LookAt:=xlWhole)
→Set Obj = Worksheets("シフト").Range("E3:AI3").Find(day, LookAt:=xlWhole)
の様に書き換えてみたりしたのですが上手く行かず・・・
上記のFindの検索の範囲指定を「〜シートの〜列目の変数dayを探す」と指定することは出来ますでしょうか。
以下が、書いているコードです。
Sub 抽出()
Dim lngYLine As Long
Dim intXLine As Integer
Dim Obj As Object
Dim day As Integer
Dim ws As String
day = Range("F4")
ws = ActiveSheet.Name
Set Obj = Worksheets("シフト").Cells.Find(day, LookAt:=xlWhole)
If Obj Is Nothing Then
MsgBox "対象の日付が見つかりませんでした。"
Else
lngYLine = Worksheets("シフト").Cells.Find(day).Row
intXLine = Worksheets("シフト").Cells.Find(day).Column
End If
For i = 6 To 38
ActiveWorkbook.Worksheets("シフト").Activate
If Not (Cells(i, intXLine).Value = "" Or Cells(i, intXLine).Value = "休" Or Cells(i, intXLine).Value = "有 ") Then
If Cells(i, 2).Value <> "" Then
With Worksheets(ws).Range("B9")
.Value = .Value & Cells(i, 2).Value & "、"
End With
Else
End If
End If
Next i
ActiveWorkbook.Worksheets(ws).Activate
End Sub
以上、お力添え頂けましたら幸甚存じます。
|
|