2017-10-05 120 views
0

我有一個xlsm文件,其中包含一個單擊按鈕,單擊該按鈕時應打開單獨的工作簿並搜索特定顏色的單元格的所有工作表。 問題是,它不是搜索其他工作簿的工作表,而只是搜索自己。我是VBA新手,感覺我已經圍繞互聯網6次試圖解決這個問題。我在這裏做錯了什麼?計算另一個工作簿中工作表的單元格

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))中的每個單元格,將'rng'中的每個單元格更改爲'' – Zerk

+0

我試過了,但得到了「應用程序定義的或對象定義的錯誤「 – WaltVinegar

回答

0

它看起來對我來說,你是不是完全限定的Range

移動這裏面你的WS循環,而不是它現在是。

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

我給了那一槍,並得到」對象不支持這個屬性或方法「向我吐口水。 – WaltVinegar

+0

我的壞...你需要你的ws代替 - 我會編輯 – braX

+0

我已經改變了,現在我得到了「對象變量或塊變量未設置」。我應該早些時候在什麼地方設置ws = [something]? – WaltVinegar

0

BraX指出,我需要限定RangeFor Each ws循環,所以這裏是固定的,工作代碼。再次,所有功勞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 

結束子

相關問題