1

我是 VBA 新手,但已经成功创建了一些有用的 Excel 函数。我现在正在做的那个看起来应该很简单的,正在躲避我。我想我误解了语法,需要一些指导。

考虑以下屏幕截图;我正在尝试在 E 列中创建函数,它只是来自 D$n 的值。 在此处输入图像描述

到目前为止,这是我所得到的:

Function PASTVALUE(q As String)
q.PasteSpecial Paste:=xlPasteValues
End Function

如果我理解正确,它将输入值(在我的情况下为 cell 的内容D$n)作为字符串读取,然后使用PasteValues.

在粘贴之前我需要以某种方式复制它吗?我认为q As String参数是将它带入函数的原因。

但是,如果我不复制,它是否试图paste从一个空的剪贴板......在这种情况下,我知道我应该用什么来完成这个。

帮助!

4

2 回答 2

3

您可以像这样“转移”值(显示)

Function PASTEVALUE(rng As Range)
    PASTEVALUE = rng.Text
End Function

或使用Evaluate()函数计算该范围内的公式

 Function PASTEVALUE(rng As Range)
        PASTEVALUE = [rng]
    End Function
于 2013-07-09T15:35:32.600 回答
0

Excel 对象模型的某些功能在计算期间无法访问;即在评估功能期间。从广义上讲,它们是以某种方式操纵单元格中的值。如果反过来,Excel 中的计算过程就会中断。

因此,将剪贴板数据粘贴到工作表中属于禁止类别。

一种解决方案是将您的代码放在宏中;可通过工作表上的按钮访问。这超出了计算周期,因此是允许的。

于 2013-07-09T15:41:24.120 回答