プロが教えるわが家の防犯対策術!

Excelにて、現在シートをArrayにて指定しているのですが、シート名が変わるたびに書き換えているのを全シート対象(指定)とする事で、書き換えることをしなくても使えるようにしたいのですが、
うまくいかずに困っています。どなたかご教授願います。

※シート名は違いますが、各シートの書式は同じです。

myAry = Worksheets.Selectを試してみたのですが、エラー(添付画像参照)となります。


現在のコード
Dim myPath As String, fN As String
Dim WB As Workbook, WS As Worksheet
Dim i As Long, k As Long
Dim c As Range, myCol As Long
Dim FoundCell As Range, FirstCell As Range
Dim myAry

myAry = Array("A", "B", "C", "D", "E", "F") '<・・・シート指定している、

myPath = ThisWorkbook.Path & "\"
fN = ComboBox2.Value
Workbooks.Open myPath & fN
Set WB = ActiveWorkbook
With ThisWorkbook.Worksheets("データーリスト")
For i = 2 To .Cells(Rows.Count, "H").End(xlUp).Row
If .Cells(i, "H") <> "" Then
For k = 0 To UBound(myAry)
Set WS = WB.Worksheets(myAry(k))

Set c = WS.Rows(1).Find(What:=ComboBox1.Value, LookIn:=xlValues, Lookat:=xlWhole)

If Not c Is Nothing Then
myCol = c.Column
Set FoundCell = WS.Range("A:A").Find(What:=.Cells(i, "H"), LookIn:=xlValues, Lookat:=xlWhole)
If Not FoundCell Is Nothing Then
Set FirstCell = FoundCell
GoTo 処理
Do
Set FoundCell = WS.Range("A:A").FindNext(After:=FoundCell)
If FoundCell.Address = FirstCell.Address Then Exit Do
処理: WS.Cells(FoundCell.Row, myCol) = .Cells(i, "I")

Loop
End If
End If
Next k
End If
Next i
End With
End Sub

よろしくお願いいたします。

「Excelにて、現在シートをArrayに」の質問画像

A 回答 (2件)

For k = 0 To UBound(myAry)


Set WS = WB.Worksheets(myAry(k))

For k = 1 To WB.Worksheets.Count
Set WS = WB.Worksheets(k)
に変えてください。
    • good
    • 0
この回答へのお礼

早々に対応して頂き、ありがとうございます。
うまくいきました
感謝いたします

お礼日時:2021/01/31 09:30

コードの中身を見てませんが、


全シートを対象とするということで、参考になるでしょうか?

Sub sample1() '全シート選択するだけ
  Sheets.Select
End Sub

Sub sample2() '順番に選択
  For i = 1 To Sheets.Count
    Sheets(i).Select
    MsgBox i & "番目選択中!"
  Next
End Sub

Sheets(5) だと、5番目のシートを対象にできるんです。
なので、 Sheets.Count で全シート数を取得して、
For で順に選択させてます。
    • good
    • 0
この回答へのお礼

参考にさせて頂きます。
ありがとうございました。

お礼日時:2021/01/31 09:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!