2016-05-17 77 views
1

我正在尝试创建一个将应用于SSIS包的Excel脚本的脚本,该脚本将根据单元格的内容更改列可见性。基于单元格内容的Excel更改

基本上我有一列将包含报告的名称。该报告将包含单词“MID”或“END”,该单词确定是月中还是月末报告。现在,我让脚本遍历该列中单元格的内容,并且应该使单元格可见或不可见,但是我相信问题是If Else在我使用的整数之前未应用,因此它遍历整个列表,看看它是否是If语句的第一个条件,但不会循环回到Else语句的开头。

如果有更好的方法根据单元格的单元格内容进行更改,请告诉我,因为这将被广泛使用。

这是我目前拥有的代码:您已经循环你的循环里面去大约在同一范围内

'Mid Month/Month End Changes 
ReportRange = .Range("B2", "B" & lastrow) 
k = 0 
For k = 0 To ReportRange.Rows.Count - 1 
    ReportCell = .Cells(2 + k, 2) 
    Report = ReportCell.Value 
    MidHrsCell = ReportCell.Offset(, 5) 
    EndHrsCell = ReportCell.Offset(, 6) 

    For Each Cell In ReportRange 
     If InStr(Report, "MID") > 0 Then 
      EndHrsCell.EntireColumn.Hidden = True 
     Else 
      MidHrsCell.EntireColumn.Hidden = True 
     End If 
    Next 
Next 

回答

1

。我已经将它简化为每个下面只有一个循环。

'Mid Month/Month End Changes 
ReportRange = .Range("B2", "B" & lastrow) 
k = 0 
For Each Cell In ReportRange 
    Report = Cell.Value 
    MidHrsCell = Cell.Offset(, 5) 
    EndHrsCell = Cell.Offset(, 6) 
    If InStr(Report, "MID") > 0 Then 
     EndHrsCell.EntireColumn.Hidden = True 
    Else 
     MidHrsCell.EntireColumn.Hidden = True 
    End If 
Next 
+0

谢谢,这确实会消除额外的循环,但不幸的是结果是相同的。我已经测试过,看到InStr(报告,“MID”)正在拉正确的值(0为我测试),但列不隐藏。 –

+0

没关系。我是一个白痴。隐藏的列代码之后,我有一个部分将自动安装应用于整个工作表。感谢您的循环帮助! –

相关问题