gpt4 book ai didi

excel - VBA 输出写入单元格 - #VALUE!错误

转载 作者:行者123 更新时间:2023-12-02 22:05:07 25 4
gpt4 key购买 nike

我正在尝试使我的 UDF 工作(在 Excel 2003 中),调试后问题似乎总结在我的函数的这个精简版本中:

Function btest(b_1 As Double) As Double    
btest = 1
Worksheets("Sheet1").Range("A1").Value = b_1
'^this is the bit I want to work but doesn't^
End Function

这模拟了我的真实函数,该函数在以下不执行的单元格输出行之前没有问题地分配了一个值。我相信这与#VALUE!有关尽管我使用了MsgBox,但我得到了返回错误这表明该函数确实有一个数值。

有人可以解释一下吗?

另外:有什么区别

Worksheets("Sheet1").Cells(1, 1) = B

Sheets("Sheet1").Range("A1").Value = B

哪里B 是某个数值吗?

谢谢

最佳答案

正如您已经意识到的那样

it looks like the problem is any UDF is not allowed to edit sheets, only return a single value...so if I want to edit another cell as part of the same process, I need to use a sub"

标准 UDF 无法更改工作表。

但是就您的后续评论而言

Is this correct, and if so, how would I go about that - sub within a function or function within a sub? I want my spreadsheet to automatically react to inputs as it would with a function - no buttons or special actions required.

您可以使用事件

举个例子:

  • 您想要跟踪某个工作表上的 A1:A10 的输入
  • 如果使用此区域,您需要将 Worksheets("Sheet1").Range("A1").Value 设置为此值

问题1

  1. 右键单击要跟踪的工作表的标签
  2. 查看代码
  3. 复制并粘贴以下代码4 按 返回 Excel

代码

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Set rng1 = Intersect(Target, Range("a1:10"))
If rng1 Is Nothing Then Exit Sub
Application.EnableEvents = False
Worksheets("Sheet1").Range("A1").Value = rng1.Value
Application.EnableEvents = True
End Sub

问题2

它们是相同的。

关于excel - VBA 输出写入单元格 - #VALUE!错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com