我正在运行一个宏来清理工作簿中的空行,并且由于For循环的运行方式,它会错过连续的空行,例如:
我的(可能是有缺陷的)解决方案是在删除将for循环递减一步的行之后添加一个步骤,以便它将连续捕获。
我试过了:
For i = 1 To 2000
If IsEmpty(Cells(i, 6)) = True Then
Rows(i).EntireRow.Delete
i = i - 1
End If
Next i
这似乎无限循环。我也尝试了i - = 1, - i等,但是由于预期的表达而失败了。 i = --i atleast运行但似乎无法删除空白行。
有什么建议吗?如果遗漏了明显的东西,请提前道歉。
答案 0 :(得分:5)
删除时你应该倒退一步,所以从2000开始向下工作以确保没有跳过任何行。
For i = 2000 To 1 step -1
If IsEmpty(Cells(i, 6)) = True Then
Rows(i).EntireRow.Delete
End If
Next i
答案 1 :(得分:1)
尝试反向运行它,所以从2000开始(使用你的例子,或者我认为是Worksheet.Rows.Count)然后再回到1.这样你就不需要在删除循环索引时摆弄它一排。
所以:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.kamran.ebloodbank">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".SplashScreen"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="E Blood Bank"
android:screenOrientation="portrait"/>
<activity
android:name=".LogIn"
android:label="@string/loghead"
android:screenOrientation="portrait"/>
<activity
android:name=".RegisterForm"
android:label="Registration Form"
android:screenOrientation="portrait"/>
<activity
android:name=".FindDonor"
android:label="Find Donor"
android:screenOrientation="portrait"/>
<activity
android:name=".FindBloodBank"
android:label="Find Blood Bank"
android:screenOrientation="portrait"/>
<activity android:name=".GuestActivity"
android:screenOrientation="portrait"/>
<activity android:name=".AfterLoginMain"
android:screenOrientation="portrait"/>
<activity android:name=".ViewProfile"
android:label="View Profile"
android:screenOrientation="portrait"></activity>
</application>
</manifest>
你当前代码循环的原因是第2000行是空白的,所以它删除它并将你的循环计数设置回1999,所以它再次尝试第2000行,这是空白等等。