我正在尝试根据for循环的迭代插入和更改counta公式。我面临的问题是,即使代码运行没有错误,也没有任何反应。 totalrow变量始终为0.我不确定我在哪里出错了。所有变量都已在循环外初始化。 CurrentColname是string,countUsedCols是long,totalRows是long。
For i = 2 To countUsedCols
ActiveSheet.Cells(3, i).Select
currentColName = ActiveSheet.Cells(3, i).Value
If currentColName = "Valid From" Then
totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA($" & i & ":$" & i & ")"
totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Value
答案 0 :(得分:2)
有几件事。
在vba中放置X=Y=Z
X根据y = z是否变为布尔值。
所以当你写:
totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA($" & i & ":$" & i & ")"
Totalrow返回false,因为该单元格中的公式与您提供的字符串不同。
第二个COUNT A将解析为一行而非一列。 i
是一个数字,而不是一个字母。
所以从第一个表达式中删除totalrow =
并更改范围引用。
ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA(" & Columns(i).Address &")"
答案 1 :(得分:0)
我想你想在Cell AR1中写一个公式来计算行数(用第一个totalrow语句);然后获取该值(使用第二个totalrow语句)。但我相信斯科特表示,第一个完整的声明是错误的。你需要改变它。
同样对于Counta公式,您需要包含原始工作表名称,否则它只计算Customer_Facing_View工作表中的列。