2014-10-17 20 views
-3

我有一個通過每個工作表並檢查一個標誌的子。調用另一個工作表的子

如果標誌提出,我希望它運行另一個子。標誌檢查工作,但被調用的另一個子運行在主表單上。

代碼:

Sub update() 
    Dim ws As Worksheet 
    For Each ws In ActiveWorkbook.Worksheets 
     If (ws.Cells(1, 5) = 1) Then 
      Call update2(ws) 
     End If 
    Next 
End Sub 


Sub update2(ws As Worksheet) 
    ws.clear <----does not work 
End Sub 


sub dothis() 
    cells(1,6) = "hallo" 
end sub 

我怎麼得到這個工作?

+1

對象不支持此屬性或方法。該錯誤消息相當明確。在Worksheet對象上沒有'Clear'方法。 '.Clear'方法適用於Range對象。 – 2014-10-17 16:33:09

+1

sub clear()可能不是個好主意,清除是關鍵字 – Alex 2014-10-17 16:35:09

+0

@DavidZemens謝謝。我改了名字,但仍然不起作用 – user1681664 2014-10-17 16:41:05

回答

1

您需要使用公共變量(通常不推薦)或將必要的參數發送到需要它們的過程。

Sub update2(ws As Worksheet) 
    Call dothis(ws) 
End Sub 


sub dothis(ws as Worksheet) 
    ws.cells(1,6) = "hallo" 
end sub 
+0

我以前已經嘗試過,但是這會更新activesheet並且不會更新標記的工作表 我希望項目能夠貫穿所有工作表並在每個標記的工作表上執行dothis() – user1681664 2014-10-17 17:50:34

+0

不,您之前沒有嘗試過。以前你嘗試過'Cells(1,6)=「hallo」'。 *該*只會影響activesheet。但是既然你把'ws'分配給'Each Worksheet',在一個循環中,如果你做了'ws.Cells(1,6)'應該適用於*每個*工作表。 – 2014-10-17 17:52:22

+0

在此之前,我確實這樣做了,但我試圖用更短的方式做到這一點。我想這周圍沒有捷徑。感謝您的幫助,但 – user1681664 2014-10-17 17:58:24

1
Sub update2(ws As Worksheet) 
    ws.Cells.Clear 
End Sub 
+0

對不起,我覺得我困惑的人。我想運行MY sub,名爲clear。我會更改名稱 – user1681664 2014-10-17 16:33:58

相關問題