EXCEL VBA,为啥函数子过程中不能使用find方法。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL VBA,为啥函数子过程中不能使用find方法。相关的知识,希望对你有一定的参考价值。
Public Function MDD(DH As String)
MDD = Sheet1.Cells(Sheet1.Range("a:a").Find(what:=DH).Row, 6)
End Function
其中Sheet1.Range("a:a").Find(what:=DH)怎样都查找不到,值都是nothing。
请教高手解决,谢谢。
如图:搜索的区域a列为公式生成。
哎呀,我自己解决了,FIND方法中有一个搜索选项lookin,参数设为xlValues就好了。
可以查到啊?
可能你的用法错了!
Public Function MDD(DH As String)
MDD = Sheet1.Cells(Sheet1.Range("a:a").Find(what:=DH).Row, 6)
End Function
Sub A()
MsgBox MDD("PP")
End Sub
如果您类别的字符是用公式生成出来的呢?
比如TEXT(C13,"yymm")
C13是当前时间
=MDD(TEXT(A13,1))这样呢?
追问不行呀,是搜索的区域的值是由公式生成的,不是搜索项是公式生成的。
DH可以是一个表达式的。
不明白你说的是什么意思了,你是说F13里面是一个公式?也可以显示出来啊?显示的结果就等于F12的结果啊?
再不行你就把文件传上来我看看呢?
如果是Find为nothing,那就是你的Sheet1表中A列不存在DH所指定的字符串;
否则就是不存在名为Sheet1的表追问
sheet1肯定存在,DH更是肯定存在。
追答那就只能是你在传入的DH的类型和表格里实际的值的类型不匹配了
参考技术B excel中的函数和VBA中并不是完全对应的,试试InStr追问咱们说的完全不是一个问题。不过还是谢谢你。
VBA研究VBA中如何用求和函数SUM求和
作者:iamlaosong
SUM是Excel的函数,在VBA中调用需要加上Application.WorksheetFunction.Sum(),但是,Excel写法却不能用。
比如,excel单元格中可以写成=sum(d2:d100),VBA中是不能这么写的,即使加上引号写成Application.WorksheetFunction.Sum(“d2:d100”),语法上倒是没什么问题,却得不到正确的结果。
正确的写法是:Application.WorksheetFunction.Sum(range(“d2:d100”)),如果用变量,写法如下:
maxrow = [D65536].End(xlUp).Row '行数,出库单号数量
shuliang = Application.WorksheetFunction.Sum(Range("d2:d" & maxrow))
其中:
Application表示当前的EXCEL运行的程序。
WorksheetFunction表示调用当前EXCEL程序里的公式。
后面出现的SUM就是EXCEL里的默认公式。
Excel求和函数很多,如下:
SUM、SUMIF、SUMIFS、SUMPRODUCT、DSUM
以上是关于EXCEL VBA,为啥函数子过程中不能使用find方法。的主要内容,如果未能解决你的问题,请参考以下文章
VBA 使用字符串数组作为子字符串参数 InStr 函数 (Excel)