Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4164|回复: 23

[VBA] 自定义函数能否在VBA中直接运用

[复制链接]
发表于 2013-5-5 19:48 | 显示全部楼层 |阅读模式
本帖最后由 huangcaiguang 于 2013-5-5 20:21 编辑

自己做好了一个自定义函数放在工作簿内,在该工作簿打开后,能否直接用代码在sheet1的A1单元格写入含自定义函数的公式。
注意是在VBA中写公式对单元格赋值、不是在界面操作直接写公式。。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-5 20:02 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-5-5 20:07 | 显示全部楼层
hwc2ycy 发表于 2013-5-5 20:02
要放在模块内。

就比如开始发的那个易失性函数 Page(x As Range, z As Byte)
请教:我要在sheet1的A1=TEXT(I3,"共"&page(H2,1)&"页")   VBA语言怎么写呢?
Public Function Page(x As Range, z As Byte)
   '特别注意:当Z参数是0时,统计指定单元格所在页的页码(是以列分页符的值是1为前提条件的)
    '由自定义函数的Z参数来确定是进行工作表选定单元格所在页数
    '或是工作表总页数计算
    '当Z参数是0时,统计指定单元格所在页的页码
    '当Z参数是1至255任一个数值时,统计工作表总页数
    If z = 0 Then
      ih = 0
      For Each yh In ActiveSheet.HPageBreaks
        ih = ih + 1
        If x.Row <= yh.Location.Row Then
          Page = ih
          Exit Function
        End If
      Next yh
      Page = ih + 1 '以上8行代码及本行代码,最终得出指定单元格所在页的页码
    Else
        Page = (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1) '统计工作表总页数
    End If   
    Application.Volatile '本代码将此自定义函数标识为易失性函数,对自定义函数进行重算
End Function
回复

使用道具 举报

发表于 2013-5-5 20:11 | 显示全部楼层
你插入一个模块,把函数的代码放到模块里,直接在单元中输入就会有提示了。
回复

使用道具 举报

 楼主| 发表于 2013-5-5 20:15 | 显示全部楼层
本帖最后由 huangcaiguang 于 2013-5-6 14:11 编辑
hwc2ycy 发表于 2013-5-5 20:11
你插入一个模块,把函数的代码放到模块里,直接在单元中输入就会有提示了。

这个我知道,我是想这个函数有了,怎么把它像普通内置公式一样进行单元格赋值(含这个公式)
不是有一个像sheet1.cells(1,1).formula="=......."的东西么?
我按照这个方法在VBA里面不能用这个函数啊!
回复

使用道具 举报

发表于 2013-5-5 20:31 | 显示全部楼层
你直接=page呢。参数写齐了没有。
回复

使用道具 举报

发表于 2013-5-5 20:37 | 显示全部楼层
最好不要用这个了,拖几百个出来,CPU量运算太大了。
回复

使用道具 举报

 楼主| 发表于 2013-5-5 20:37 | 显示全部楼层
hwc2ycy 发表于 2013-5-5 20:31
你直接=page呢。参数写齐了没有。

=TEXT(I3,"共"&page(H2,1)&"页")
直接在操作界面显示没有任何问题,就是不知道用VBA语言去表示这个公式
但用VBA语言在sheet1的A1进行赋值时用那个fomula就出错了!
回复

使用道具 举报

发表于 2013-5-5 20:37 | 显示全部楼层
你出不来值,是因为你没有输入完整的参数。
或者代码没有放在插入的模块内。
回复

使用道具 举报

发表于 2013-5-5 20:38 | 显示全部楼层
另外你的页码返回值貌似也有问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-18 07:51 , Processed in 0.194488 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表