我有一個excel宏,用於在基於另一個SO問題here的「Worksheet_Change」函數中的Excel中管理按鈕可見性。Worksheet_Change設置目標範圍很慢
問題是,雖然宏工作,它使更新Excel工作表相當滯後。我已成功地緩慢牽制,一條線路:
Set rUpdated = Range(Target.Dependents.Address)
這將通過後面的腳本進行迭代更新爲變量的單元格區域。如果我用這一行調用一個腳本,我發現這是所有延遲的地方。這似乎是一條相當簡單的路線,但有沒有更好的方法來做到這一點?
披露:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rUpdated As Range
Dim shp As Shape
Dim rCell As Range
Set rUpdated = Range(Target.Dependents.Address)
If Not rUpdated Is Nothing Then
For Each rCell In rUpdated
If rCell.Column = 1 Then
'Look at each shape in the sheet and cross-reference with rCell.
For Each shp In Target.Parent.Shapes
If shp.TopLeftCell.Row = rCell.Row Then
shp.Visible = (rCell.Value <> "")
Exit For 'Exit the loop - the correct button has been found.
End If
Next shp
End If
Next rCell
End If
End Sub
你引用的單元格是否總是在同一行?如果是這樣的話,編寫一個自定義函數可能會更快,該函數將更改單元格的地址並檢查當前行中的公式 – Zac
否,引用的單元格可能是電子表格的整個高度。不過,我只關心一行。我只需要一個比調用'Target.Dependents'更好的方法。 – fileinster