vba - For循环从1到递增值
问题描述
我试图运行“for循环”某些时间,偶尔在循环下的范围内添加一个额外的行。假设该示例最初有 15 行,并且在循环期间,条件为真 2 次,所以它应该在总行数上加上 +2。但是,代码似乎没有为那些添加的行执行循环,并在传递 orc=15 的值后立即退出。
下面的代码:
sub loop_to_orc()
dim i as integer, orc as integer
dim operations as range
set operations = range(cells(1, 1), cells(, 1).end(xldown))
orc = operations.rows.count
for i = 1 to orc
if cells(i,1)>0 then
rows(i+1).insert
end if
orc = operations.rows.count
next i
end sub
我哪里错了?有什么方法可以为添加的行实际运行循环吗?
解决方案
您可以引入一个额外的变量:
Dim rowsAdded As Long
rowsAdded = 1
然后像这样使用它:
for i = 1 to orc
if cells(i,1)>0 then
rows(i+rowsAdded).insert
i = i - 1
rowsAdded = rowsAdded + 1
end if
next i
这样,插入行时不会增加,而是在循环中选择,所以我们必须添加.i
i
rowsAdded
推荐阅读
- angular - 角度表 mat-table 和 cdk-table
- react-native - 为什么将导航减速器添加到白名单时,Ignite redux 会持续抛出不可变错误?
- mfc - 资源 ID < 32768 不命令路由
- c - 如何在 Xamarin Android 中隐藏/关闭软键盘?
- jakarta-ee - 在远程 glassfish 服务器上运行 EntAppClient 的 domain1/lib/applibs 文件夹中不存在 RemoteInterface.jar
- keras - keras.tokenize.text_to_sequences 和词嵌入有什么区别
- python-3.x - 如何使用变量调用 Pandas 数据框的不同属性?
- python - 如何使用我编写的脚本输出/打印服务器正在重新启动的“证明”?
- java - 为什么“EntityDamageByEntityEvent”没有被激活?
- blazor - Can a Blazor app include .NET 4.6.1 Assemblies?