【发布时间】:2018-04-25 21:14:20
【问题描述】:
我需要在工作簿中的所有工作表上执行完全相同的任务,除了一张,我有以下代码,但出现以下错误:
End If 没有 Block If
Sub Servers3_DeleteIrrelevantColumns()
'Initialize variables
Dim currentColumn As Integer
Dim columnHeading As String
Dim wrkSht As Worksheet
'Rename headers on all sheets if matched
If wrkSht.Name <> "New Servers" Then
For Each wrkSht In ActiveWorkbook.Worksheets
wrkSht.Cells(1, 1).EntireRow.Replace What:="*ServerName*", Replacement:="Server Name", Lookat:=xlWhole
For currentColumn = wrkSht.UsedRange.Columns.Count To 1 Step -1
columnHeading = wrkSht.UsedRange.Cells(1, currentColumn).Value
'Check whether to keep column
Select Case columnHeading
Case "Server Name"
'Do nothing
Case Else
wrkSht.Columns(currentColumn).Delete
End Select
Next
End If
End Sub
【问题讨论】:
-
您在第一个
For Each循环(直接在Next之后和End If之前)缺少一个Next。 -
For Each wrkSht In ActiveWorkbook.Worksheets你没有End For -
您的
If wrkSht.Name <> "New Servers" Then条件应该在您的For Each wrkSht In ActiveWorkbook.Worksheets循环中,因为在该循环之外,wrkSht只是一个Worksheet对象并且不指向工作表 -
@Zac 是正确的,加上@peh 指出的缺少的
next。您需要在for each sh之后的if sheet<>"name" then和next sh之前的end if -
抱歉,我将“撤消”更改并发布解决方案。