簡體   English   中英

在 VBA 上引用具有可變公式的 Excel 單元格

[英]Referencing an excel cell that has a variable formula on VBA

我已經建立了一個評估表,允許您從下拉列表中選擇您的姓名,並在其他單元格中彈出有關您的所有其他詳細信息。 此類詳細信息之一將彈出是或否,具體取決於您是否管理團隊。 現在,我的 VBA 代碼引用了這個具有 Yes 或 No 的單元格 (F8),它根據 F8 的值隱藏或取消隱藏某些行。 這里的問題是 F8 有一個公式用於推導它的值(A Vlookup)並且公式讀取

=IFERROR(VLOOKUP($C$6,Data!$E:$I,5,0),"")

自從我開始在 F8 中使用公式以來,我的 VBA 代碼不再隱藏或取消隱藏任何單元格。 我的 VBA 代碼如下

ActiveSheet.Activate
If Not Application.Intersect(Range("F8"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "Yes": Rows("25:26").EntireRow.Hidden = False
        Case Is = "No": Rows("25:26").EntireRow.Hidden = True

        End Select


End If
End Sub
  1. Range(Target.Address)實際上和Target ,不要把事情復雜化。
  2. 並且ActiveSheet被稱為ActiveSheet因為該工作表處於活動狀態 所以要.Activate一個 aleady 活動表ActiveSheet.Activate是非常沒用的 :)

下面應該這樣做。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Me.Range("C6"), Target) Is Nothing Then
        Select Case Me.Range("F8").Value
            Case Is = "Yes": Me.Rows("25:26").EntireRow.Hidden = False
            Case Is = "No": Me.Rows("25:26").EntireRow.Hidden = True
        End Select
    End If
End Sub

但請注意,如果您查找的Data!$E:$I中的值發生變化,則 F8 =IFERROR(VLOOKUP($C$6,Data!$E:$I,5,0),"")的公式結果將更改而不觸發Worksheet_Change事件! 因此請注意,更改Data表中的某些內容后,您需要重寫/重新選擇 C6 中的值,以再次觸發宏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM