Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: shwanghuafeng

[已解决]【怎么写】寻找A列至L列中最远的非空单元格的行号

[复制链接]
发表于 2015-12-18 15:03 | 显示全部楼层
以前还真没注意,在不同地方引用自定义函数,其中用到的CurrentRegion所得到的结果居然是不同的,怪事,怎么回事呢?
1.png
回复

使用道具 举报

 楼主| 发表于 2015-12-18 15:32 | 显示全部楼层
爱疯 发表于 2015-12-18 14:41
Public Function Qst()
    Dim ar
    ar = Sheet1.Range("a1").CurrentRegion

此处手滑,去掉多余的r还是不行,依然是#value
回复

使用道具 举报

发表于 2015-12-18 16:50 | 显示全部楼层    本楼为最佳答案   
QQ截图20151218164239.jpg




Function test1()
    Dim ar
'    ar = Sheets(1).Range("a1").Resize(20, 1)    '绝对可以,arr必定是数组,函数返回值必定不会发生错误。
    ar = Sheets(1).Range("a1").CurrentRegion    '可能出错
'    ar = Sheets(1).UsedRange                    '可能出错
    test1 = UBound(ar)
'    test1 = 123
End Function

Sub test2()
    Dim arr
    arr = Sheet1.Range("a1").CurrentRegion
    MsgBox UBound(arr)
End Sub

Sub test3()
    MsgBox test1()
    '当出现在子过程里时,Range("a1").CurrentRegion,或 Sheets(1).UsedRange ,可以是数组。
End Sub

Function test4()
    test4 = Range("a1").CurrentRegion    '11楼
    '至少说明,当出现在本过程里时,系统认为:Range("a1").CurrentRegion 等同于A1单元格。
    '也就是说,即使是数组,也只看作一个数值。(也许系统认为这是能确保安全吧)
    '那么对于test1中的 Ubound(ar),也就视为 类型不匹配
End Function

Function test5()
    test5 = [a1]
End Function



D7单元格2.rar (13.2 KB, 下载次数: 5)
回复

使用道具 举报

发表于 2015-12-19 11:00 | 显示全部楼层
shwanghuafeng 发表于 2015-12-18 15:32
此处手滑,去掉多余的r还是不行,依然是#value

在工作表中使用自定义函数是会有很多限制的
回复

使用道具 举报

 楼主| 发表于 2015-12-19 11:24 | 显示全部楼层
青城山苦丁茶 发表于 2015-12-18 15:03
以前还真没注意,在不同地方引用自定义函数,其中用到的CurrentRegion所得到的结果居然是不同的,怪事,怎么 ...

13L做出了解释,你看看能不能参考解决你的问题,我回头再仔细想想,这帖我先结了,谢谢回答
回复

使用道具 举报

 楼主| 发表于 2015-12-19 11:25 | 显示全部楼层
爱疯 发表于 2015-12-18 16:50
Function test1()
    Dim ar
'    ar = Sheets(1).Range("a1").Resize(20, 1)    '绝对可以, ...

从来没想过会有这种问题,谢谢大大的耐心解答,我再想一想
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 00:25 , Processed in 0.391031 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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