ブックに複数のシートがあります。Excel VBA +配列を使用してシートを非表示または再表示する
NotToTouchSheet1、NotToTouchSheet2、NotToTouchSheet3、NotToTouchSheet4、 HideOrToUnhideSheet1、HideOrToUnhideSheet2、... ... ...、HideOrToUnhideSheet10
あなたが上見ることができるように、私はどんな隠しませんしたくないシートがあります条件が与えられれば、シートは隠すか隠すかのいずれかになります。
条件は、ユーザーがコンボボックスから値を選択すると、コンボボックスがシート名を列挙し、配列から吐き出された状態です。
私の質問は、私が持っているシートの枚数を考えれば、範囲/配列にないものを非表示にする方法と、NotToTouchSheetを非表示にしたくないものです。
たとえば、ユーザーはコンボボックスリストから「A」を選択します。 'A'値は、HideOrToUnhideSheet1、HideOrToUnhideSheet3、HideOrToUnhideSheet5で構成されます。したがって、私は 'HideToTouchSheet'シートを 'HideOrToUnhideSheet1,3と5'、それ以外を隠すようにしたいと思います。
ユーザがコンボボックスリストから「B」を選択したとき。 'B'値は、HideOrToUnhideSheet8、HideOrToUnhideSheet9、HideOrToUnhideSheet10で構成されます。これらのシートは隠されていたので、私はそれを覆い隠してHideOrToUnhideSheet1,3と5を隠したいと思っています。
上記の例が私が達成したいことを理解し、視覚化するのに役立つことを願っています。
myArray = Split(blah, "|")
inputCell = 4
For Each sht In Worksheets
For myArrayIndex = LBound(myArray) + 1 To UBound(myArray) - 1
commName = Replace(myArray(myArrayIndex), " Consol", "")
If (sht.Tab.Color = 192 Or sht.Tab.Color = 5296274) And (sht.Name Like "* Consol" Or sht.Name Like "* Detail") Then
if the above condition is true, hide those sheets that are not in the array PLUS those 'NotToTouchSheet'
End If
Next myArrayIndex
Next sht