2016-05-17 27 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

あなたは同じ範囲の周りに行くためにあなたのループ内でループしています。私はそれを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(Report、 "MID")が正しい値(私がテストしているものの0)を引っ張っているのを見るためにテストしましたが、カラムは隠されていません。 –

+0

気にしないでください。私はばかです。私は隠された列のコードの後に​​シート全体にオートフィッティングを適用していたセクションを持っていました。ループのおかげでありがとう! –

関連する問題