• ベストアンサー

指定したシートの行間の非表示

通常のシートの行間の非表示設定では、ユーザーが再表示ができるので、指定した行の非表示をVBAのコードで記述したいのですが、うまくいきません。 以下のコードですと Sub 計算表の部分非表示() '計算表の部分非表示 Sheets("計算表").Select Worksheets("sheet1").Rows("5:22").Visible = xlVeryHidden End Sub インデックスエラー 有効範囲にありません とかエラーが出ます。 他に見せなくする方法はありますか? 図の固定をしてとかで隠す方法とか? でも、マクロを記述しているのでシート保護ではうまくいかないようです。 よい解決方法を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。  Sub 計算表の部分非表示()  '計算表の部分非表示  Sheets("計算表").Select  ×Worksheets("sheet1").Rows("5:22").Visible =  xlVeryHidden  End Sub ふたつの部分が違っていると思います。 >インデックスエラー 有効範囲にありません Sub Test1() Sheets("計算表").Select  'セレクトしているなら、次は、以下だけです。 Rows("5:22").Hidden = True End Sub となるはずです。ただし、「標準モジュール」にコードがないと、エラーが出るかもしれません。xlVeryHidden は、シートの非表示のプロパティです。 >通常のシートの行間の非表示設定では、ユーザーが再表示ができるので、指定した行の非表示 ということは、いずれにしても、ユーザーが選択できないようにするのですか? 再表示のコマンド自体を、Visible =False にするなどできるかと思います。 Sub Test2 '再表示-非表示 With Application '右クリックメニュー  .CommandBars("Row").FindControl(, 884).Visible = False '書式の行メニュー  .CommandBars("Worksheet Menu Bar").Controls(5) _         .Controls(2) _         .Controls(4).Visible = False End With End If >マクロを記述しているのでシート保護ではうまくいかないようです。 マクロとシート保護の因果関係はないと思いますが、うまくいかないのは、その部分のコードを読んでみないと、なんともいえませんね。

dmura
質問者

お礼

こんばんわ おかげで思っていた作業が出来ました。 ほんとにありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

表示・非表示を手作業でやれば表示に戻せるが、マクロで設定すると戻せないということは、エクセルVBAの大原則はずれでしょう。 手作業でできることがマクロでできる。 マクロでできることは、時間と手間を掛ければ手作業でできる。 マクロでしかできないことは、ごく珍しいはず。 xlVeryHiddenはシートに対するもの。 複数行の非表示をいっぺんにやるのは Rows("5:10").EntireRow.Hidden = True アクチブシートに対してです。 Sheet2をアクチブにして Worksheets("Sheet3").Rows("5:10").EntireRow.Hidden = True もできました。 非表示では、情報を目に入れない程度でなく、情報を隠すのは不可能では。 完全なブックを保存し、削除した方を見せるとか。その行が演算などに使われておれば、合計値行を入れるとか。 2重帳簿的にやらないとダメかなと思いました。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

Worksheets("sheet1").Rows("5:22").Visible = xlVeryHidden を Rows("5:22").Select Selection.EntireRow.Hidden = True としても、ダメですか? マクロの記録で、上記マクロになりました。