2017-02-01 12 views
2

Excel(以下に添付)で列を非表示/非表示にする簡単なマクロを作成しました。 しかし、マクロ内の列の範囲内に列を追加すると、最後に非表示になっていた列は非表示のままです。 自分自身を明確にする:マクロ内の列の範囲はAM:BFです。この範囲内に列を追加する必要がある場合、列BFは非表示のままです。最初の列範囲が追加された列だけでなく隠されたままになるように、コードを改善する方法を教えてください。Excelで列を非表示/非表示にする

With Columns("AM:BF") 
    If .EntireColumn.Hidden = True Then 
     .EntireColumn.Hidden = False 
    Else 
     .EntireColumn.Hidden = True 
    End If 
End With 

答えて

5

カラムにはプレーサーが必要です。列AMの最上行に沿って名前付き範囲を使用することができます:BF(中に列を追加すると変更されます)。あなたのコードは次のようになります

With ThisWorkbook.Sheets("MySheet").Range("NamedRange").EntireColumn 
    .Hidden = Not .Hidden 
End With 
+0

ありがとうございます。範囲内に列を追加するときに問題を解決します。しかし、列が名前付き範囲の境界線に追加された場合、列は名前付き範囲に属しません。もちろん、非表示/非表示にはなりません。 解決策があるかどうか知っていますか?たとえば、名前付き範囲の最後に列を追加する必要があります(この場合はBFです)。ただし、追加すると名前付き範囲には属さず、マクロを使用しても非表示になりません。 – kicpereniek

+0

列には常にコンテンツが含まれ、シート全体で最後に入力された列ですか? – Tom

関連する問題