2017-09-11 2 views
2

ワークシート名を確認して複数のワークブックからデータを収集しようとしています。 しかし、ワークシート名(Raw Data)をチェックするためにコードを実行すると、結果が間違っています。コードはSheet1とSheet2のみを返します。以下 コードです:常にあなたからVBAコードを実行しているワークブック内のワークシートのコレクションをチェックし、あなたのために、それぞれの「はThisWorkbook」を通じて、あなたループためワークブックをループするときに正しいワークシート名を取得できません

Function WorksheetRAWExists(wsName As String) As Boolean 

Dim ws As Worksheet 
Dim ret As Boolean 

ret = False 
wsName = UCase(wsName) 
For Each ws In ThisWorkbook.Sheets 
    If UCase(ws.Name) = "RAW DATA" Then 
     ret = True 
     Exit For 
    End If 
Next 
WorksheetRAWExists = ret 

End Function 
+3

あなたのコードは、コードを含むワークブックだけを見ています - それはあなたの意図ですか? – Rory

+0

関数内のブックへの参照はどこですか? – ExcelinEfendisi

+0

ワークシート名の途中または最後に余分なスペースがありますか?それは以前に私を襲った。 –

答えて

2

これが起こります。あなたはすべての開いているブックにすべてのシートをループするために探しているなら

あなたがそうのような何かができる:

Sub test() 
Dim wbk As Workbook, ws As Worksheet 

For Each wbk In Workbooks 
    For Each ws In wbk.Worksheets 
     MsgBox ws.Name 
    Next ws 
Next wbk 

End Sub 

編集:

また、ワークブック名​​またはインデックスを渡すことができます(またはワークブック参照自体)を関数に渡し、すべての開いているワークブックをループすることが必要でない場合は、ワークブックコレクションの特定の参照を確認します。

関連する問題