Excel:VBA:CountIf()运行时出现Run-time error:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel:VBA:CountIf()运行时出现Run-time error:相关的知识,希望对你有一定的参考价值。

在运行如下程序时,出现Run-time error:

程序起始:
Dim myWorkbook As Excel.Application
Dim mySheet As Excel.Worksheet

Set myWorkbook = New Excel.Application
myWorkbook.Workbooks.Open (“workbookName”)

Dim rangeTest As Excel.range
Dim countTest As Double
Dim maxTest As Variant

(1) 第一种情况会出现错误:
Set mySheet = myWorkbook.sheets(“sheetName”)
Set rangeTest = mySheet.range(mySheet.Cells(1, 1), mySheet.Cells(10, 1))
countTest = Application.WorksheetFunction.CountIf(rangeTest, ">0") //在运行CountIf所在的行时,出现错误:Run-time error ‘13’: Type mismatch

(2) 第二种情况运行正常:
Set mySheet = ActiveWorkbook.Worksheets(“sheetName”)
Set rangeTest = mySheet.range(mySheet.Cells(1, 1), mySheet.Cells(10, 1))
countTest = Application.WorksheetFunction.CountIf(rangeTest, ">0")
//同样是CountIf(),只是sheet对象改变了,运行正常。
(3) 第三种情况运行正常:
Set mySheet = myWorkbook.sheets(“sheetName”)
Set rangeTest = mySheet.range(mySheet.Cells(1, 1), mySheet.Cells(10, 1))
maxTest=CVar(Application.WorksheetFunction.Max(mySheet.range(mySheet.Cells(rowStart,col), mySheet.Cells(rowEnd, col))))
//还是第一种情况时的sheet对象,Max可以正常运行
问题:
1. 为什么CountIf在第一种情况下不能正常运行,而第二种情况可以?
2. 为什么Max可以在第三种情况下运行,而第一种情况的CountIf不能正常运行?

应该是你那个单元格的数据格式不符合要求,比如是字符型的。你可以改为数值型。追问

谢谢您的回答!
这个问题乍一看好像是数据格式不符合,而实际上CountIf在遇到非数值型单元格时会当做不符合条件而不会产生Run-Time Error.
- 根据你的建议,我把需要处理的单元格改为数值型的,依然会有相同Error.
- 如果将同样的非数值型单元格“比如一些中文或其它字符”拷贝到ActiveWorkbook.Worksheets(“sheetName”)中的sheet中,CountIf可以正常运行.
这真是非常奇怪,希望您继续关注,谢谢!

参考技术A ntif(sheets(1).[di1:di72],sheets(1).[dj1]) then
ActiveWorkbook.RefreshAll
endif

for i=1 to 72
if [dj1]=cells(i,114) then
ActiveWorkbook.RefreshAll
exit for
endif
next

Java多线程问题--线程运行时出现异常的解决办法

private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(32, 128, 120, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(512),
r -> {
Thread t = new Thread(r);
t.setUncaughtExceptionHandler((th, e) ->
logger.error(LogBuilder.log("ThreadPoolExecutor", "uncaught exception," + th.getName()), e)
);
t.setName("th" + t.getId());
return t;
},
(r, exec) -> {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
throw new RejectedExecutionException("Task " + r.toString() +
" rejected from " +
e.toString());
}

exec.getQueue().add(r);
});

以上是关于Excel:VBA:CountIf()运行时出现Run-time error:的主要内容,如果未能解决你的问题,请参考以下文章

使用Spring4时, 运行时出现找不到MappingJacksonHttpMessageConverter的情况

为啥运行“pip install -r requirements.txt”时出现错误“找不到满足要求 scipy==1.5.3 的版本”?

部署 R Shiny 应用程序时加载包时出现问题

在新 R 版本中编译用旧版本编写的代码时出现问题

Java多线程问题--线程运行时出现异常的解决办法

将变量名称作为参数从外部函数传递到 R 中的内部函数时出现问题?