Excel vba 函数counta未定义与autofill无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel vba 函数counta未定义与autofill无效相关的知识,希望对你有一定的参考价值。
n = CountA("B3:B1000")
Range("C3:F3").Select
Selection.AutoFill Destination:=Range("C3" & ":F" & "n"), Type:=xlFillDefault
上述代码,执行时提示说“counta函数未定义”。
此外,当给n赋予确定值(如19)时,atuofill执行时提示说“方法range作用于对象_Global时失效”。
请问,代码哪里除了问题?谢!
好的,n值解决了,那range哪出了问题呢?
追答Selection.AutoFill Destination:=Range("C3:F" & n), Type:=xlFillDefault
追问回到刚才n的问题,我B列有几十个数据,但是n值提示=1,这什么情况?
参考技术B vba里不能这样用表里的函数的。application.worksheetfunction.counta这个函数。追问
好的,n值解决了,那range哪出了问题呢?
追答Range("C3" & ":F" & "n")
n不能用引号,它是数值。
n值提示为1是什么情况?
追答我想只能是一种情况,就是你执行的表与当前的表不在同一个表内。你把这一句
n = Application.WorksheetFunction.CountA("b3:b1000") 改成
n = Application.WorksheetFunction.CountA("表名!b3:b1000")
我改好了,Application.WorksheetFunction.CountA(Range("B3:B1000")),这样n就有值了,谢了!
本回答被提问者采纳VBA-在VBA中使用公式
在VBA中如何使用excel中的函数
这样Application.WorksheetFunction. “.”后面就能找到在excel中常用的函数
代码
Sub tongji() Dim k, l, m As Integer For i = 2 To Sheets.Count k = k + Application.WorksheetFunction.CountA(Sheets(i).Range("a:a")) - 1 l = l + Application.WorksheetFunction.CountA(Sheets(i).Range("f:f")) - 1 m = m + Application.WorksheetFunction.CountA(Sheets(i).Range("f:f")) - 1 Next Sheet1.Range("d26") = k Sheet1.Range("d27") = l Sheet1.Range("d28") = m End Sub
VBA里使用公式 例如 vlookup 如何找不到 就会报错
Sub chaxun() Sheet1.Range("d14") = Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheet2.Range("a:h"), 5, 0) End Sub
可以使用 On Error Resume Next 意思是如果这行代码出错了 那么执行下一行代码
Sub chaxun() Dim i As Integer On Error Resume Next For i = 2 To Sheets.Count Sheet1.Range("d14") = Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:h"), 5, 0) Next End Sub
VBA自身函数最后附表查看 VBA中文本函数比较重要
在这里需要注意
sub ss() dim l #如果后面没有定义具体的类型,这个l可以是任意类型 l = inputbox("第几行分裂") #这时候你输入的数值 但是在 inputbox 接受的是文本 所以 l 在此是文本 l = val(l) #这个意思是将文本转化成数值 或者 l= l *1 这样也可以 if l = isnumeric(l) =false then #在vba中判断是否是数值 vab.information.isnumeric exit sub endif end sub
两个查找函数 使用find函数有个缺点 如果查找不到 代码会崩溃
Sub ss() Range("a1") = Application.WorksheetFunction.Find("@", Range("a2")) Range("a1") = VBA.Strings.InStr(Range("a2"), "@") End Sub
另个vba 函数 split #split将数据分割成数组 然后从数组中取值
Sub ss() Range("b2") = Split(Range("a2"), "-")(2) End Sub
在excel中的时间函数用date函数来实现
在VBA中则是VBA
range("b2") = vba.DateTime.DateSerial(年,月,日)
以上是关于Excel vba 函数counta未定义与autofill无效的主要内容,如果未能解决你的问题,请参考以下文章