2017-10-05 10 views
0

1つのボタンがあるxlsmファイルが1つあります。このボタンをクリックすると、別のワークブックを開き、特定の色のセルのワークシートをすべて検索します。 問題は、他のワークブックのワークシートを検索するのではなく、自分自身を検索することだけです。私はVBAには新しく、これを解決しようとしている間に6回インターネットを回ったように感じる。私はここで間違って何をしていますか?あなたは完全にあなたのRange別のワークブック内のワークシートのセル数をカウントする

移動の代わりに、それは今どこにいるの、あなたのWSループのこの内部を修飾していないよう

Private Sub CommandButton1_Click() 

Dim wb As Workbook 
Dim ws As Worksheet 
Dim holdCount As Integer 
Dim cellColour As Long 
Dim cell As Range, rng As Range 


Set wb = Workbooks.Open("blahblahblah.xls") 
Set rng = Range("A1:A20") 

holdCount = 0 
cellColour = RGB(255, 153, 0) 


For Each ws In wb.Worksheets 
    For Each cell In rng 
     If cell.Interior.Color = cellColour Then 
      holdCount = holdCount + 1 
     End If 
    Next cell 
Next ws 

MsgBox "found " & holdCount 

End Sub 
+0

RNGは、ループ内で再割り当てされていません。 (ws.cells(1,1)、ws.cells(20,1)) ' – Zerk

+0

私はそれを試みましたが、 "アプリケーション定義またはオブジェクト定義エラーが発生しました。 " – WaltVinegar

答えて

0

それは私には見えます。

Set rng = ws.Range("A1:A20") 
+0

私はそのショットを与え、"オブジェクトは、このプロパティやメソッドをサポートしていない "私に戻ってスワットを得た。 – WaltVinegar

+0

私の悪い...代わりにあなたのwsが必要です - 私は編集します – braX

+0

私はそれを変更しました、今私は "オブジェクト変数またはブロック変数が設定されていません"を得ています。私はws = [何か]をどこかに早く置くべきだろうか? – WaltVinegar

0

BraX私はFor Each wsループ内Rangeを修飾するために必要なことを指摘したので、ここで固定されており、作業コードがあります。再度、すべてのクレジットはBraxになります。

Private Sub CommandButton1_Click() 

Dim wb As Workbook 
Dim ws As Worksheet 
Dim holdCount As Integer 
Dim cellColour As Long 
Dim cell As Range, rng As Range 


Set wb = Workbooks.Open("blahblahblah.xls") 

holdCount = 0 
cellColour = RGB(255, 153, 0) 

For Each ws In wb.Worksheets 
    With ws 
    Set rng = ws.Range("A1:A20") 
    For Each cell In rng 
     If cell.Interior.Color = cellColour Then 
      holdCount = holdCount + 1 
     End If 
    Next cell 
    End With 
Next ws 

MsgBox "found " & holdCount 

End Subの

関連する問題