簡體   English   中英

Excel VBA:工作表將單元格值更改為其他工作表

[英]Excel VBA: Worksheet Change cell value to different sheet

我已經為此工作了一段時間,遇到了一個真正的絆腳石。

我有一組值,這些值可通過工作表3的D列中的經過驗證的下拉菜單獲得。一旦選擇此值,當前將使用excel函數='工作表3'!D4等顯示在其他工作表(工作表7)中,等等。我有一些讀取此代碼並執行IF語句以在另一個單元格中產生值的代碼。

我的問題是代碼取決於讀取值而不是公式。

我目前有一個要運行的單獨函數的工作表更改命令,有沒有辦法讓它運行第二個函數,並從工作表3列D到工作表8列D調用任何更改,然后運行我的其他更改函數?

表格7的代碼:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range

If Intersect(Target, Range("D2:D102")) Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo Finalize

For Each c In Target.Cells
Select Case c.Column
Case 4
Call Print_Quality(c)
End Select
Next c

Finalize:
Application.EnableEvents = True
End Sub

工作表7模塊:

Sub Print_Quality(c As Range)
Dim PrintQuality As String
Dim PrintSpeed As String

PrintQuality = c.Value

If PrintQuality = "A Quality 1" Then PrintSpeed = "100"

c.Offset(0, 5).Value = PrintSpeed

End Sub

我一直在嘗試這條路線,但無濟於事:

工作表3的代碼:

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("D4:D104")) Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo Finalize

UpdateVal

Finalize:
Application.EnableEvent = True

End Sub

模塊:

Sub UpdateVal()
Worksheets("Sheet 7").Range("D2").Value = Worksheets("Sheet 3").Range("D4").Value
End Sub

非常感謝

索德斯法律,我在絕望后的一個小時內設法解決了這個問題。

我完成了另一個工作表的更改(從工作表3調用)

    Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("D4:D104")

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

Call UpdateVal

End If

End Sub

然后將此功能添加到模塊中

Sub UpdateVal()
Sheet8.Cells(2, 4).Value = Sheet3.Cells(4, 4)
End Sub

現在,它引用了工作表8中下拉菜單的值,並允許其他功能繼續使用單元格值

您是否嘗試單步執行代碼以查看問題所在? 並非如此,我建議在每個模塊的開頭放置一個休息時間,然后使用F8逐步執行。 這將確認它正在正常運行。

您還應該完全限定對工作表的引用。 盡管假定工作表引用位於工作表模塊中,但應該可以進行工作表引用,但存在失敗的機會。 您可以簡單地分配一個變量來保存工作表,如下所示:

Dim wb as Workbook
Dim ws as Worksheet

Set wb = ThisWorkbook
Set ws = wb.Sheets("YourSheetName")

此外,您的工作表3代碼:EnableEvent = True

應該是:EnableEvents = True

暫無
暫無

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

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