为什么Excel 里vba自定义函数前后计算的结果不同

为什么Excel 里vba自定义函数前后计算的结果不同,第1张

这是因为自定义函数在数据源数据变更后并不会重新运算造成的。

方法一:在公式的地方重新编辑。选中后按F2,然后回车。

方法二:写一个宏。例如:

sub 再计算()

applicationcalculate

end sub

注:可以在页面上放个按钮,然后将这个宏附在按钮上。

vba中formulaarray函数如何自定义步骤如下:

1、想自定义函数,需要进入VBA环境。打开Excel选项窗口,切换到自定义功能区选项卡,勾选开发工具选项。点击确定按钮。

2、在Excel程序主界面中,切换到开发者选项选项卡,点击点击VisualBasic按钮进入。

3、在VBA环境中,右击工作表,选择插入-模块项。

4、对应的自定义函数完成后,点击VBA界面中的Excel视图即可返回。

你这个要求不能实现啊,我用了paramarray

关键字,用来指定一个

任意元素个数

的数组

共参考:

---------

function

shuzu(paramarray

x())

applicationvolatile

dim

i,

n,

m,

tmp

n

=

ubound(x)

-

lbound(x)

+

1

if

n

mod

2

<>

0

then

tmp

=

"#err_x()":

goto

1000

n

=

n

/

2

m

=

lbound(x)

for

i

=

1

to

n

tmp

=

tmp

+

x(m

+

i

-

1)

x(m

+

i

-

1

+

n)

next

1000:

shuzu

=

tmp

end

function

-----------

输入公式的时候,需要

成对

的元素,套用你的公式如下:

=shuzu((k5,l5,m7,n9),(m13,l15,k13,m17))

可以输入任意

成对的

元素,比如使用10个参数:

=shuzu((k5,l5,m7,n9,m10),(m13,l15,k13,m17,n20))

Names("xzdm") ,Names("xzxx")指的是在工作表中,有两个以xzdm 和 xzxx 命名的单元格区域。

在2003中,插入——名称——定义。在“名称”可以找到对应的单元格。

在2007中,则是找到——公式——名称管理器。

快捷键组合都是(Ctrl+F3)

望采纳

'setunit不是后面一开始就设定为0吗?再加1也最多是1,也没有任何循环,什么时候会变成>4呢?

答:因为setunit是形参。是由用户传入的。所以是有可能超过4的。。

' (函数standard哪里确定了运算规则?count, setunit, time如何参与运算的呢?)

答:这一行只是一个简单的递归摆了

看起来没有问题,如果你另外一个SUB来调用它也会正常,例如:

SUB 测试

MSGBOX W_WW(1,2)

END SUB

结果是3

但是,如果你这个函数是作为工作表函数,那就不行了,工作表的函数不允许修改单元格。

在工作表中调用执行:A2=hanshu(A1)

'在代码中调用执行:

Sub diaoyong()

Dim d As Long

d = hanshu(10)

End Sub

Function hanshu(a As Variant) As Long

If Val(a) > 0 Then

hanshu = 1

Else

hanshu = 0

End If

End Function

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12186340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存