繁体   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