- ベストアンサー
指定したシートの行間の非表示
通常のシートの行間の非表示設定では、ユーザーが再表示ができるので、指定した行の非表示をVBAのコードで記述したいのですが、うまくいきません。 以下のコードですと Sub 計算表の部分非表示() '計算表の部分非表示 Sheets("計算表").Select Worksheets("sheet1").Rows("5:22").Visible = xlVeryHidden End Sub インデックスエラー 有効範囲にありません とかエラーが出ます。 他に見せなくする方法はありますか? 図の固定をしてとかで隠す方法とか? でも、マクロを記述しているのでシート保護ではうまくいかないようです。 よい解決方法を教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 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 >マクロを記述しているのでシート保護ではうまくいかないようです。 マクロとシート保護の因果関係はないと思いますが、うまくいかないのは、その部分のコードを読んでみないと、なんともいえませんね。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
表示・非表示を手作業でやれば表示に戻せるが、マクロで設定すると戻せないということは、エクセルVBAの大原則はずれでしょう。 手作業でできることがマクロでできる。 マクロでできることは、時間と手間を掛ければ手作業でできる。 マクロでしかできないことは、ごく珍しいはず。 xlVeryHiddenはシートに対するもの。 複数行の非表示をいっぺんにやるのは Rows("5:10").EntireRow.Hidden = True アクチブシートに対してです。 Sheet2をアクチブにして Worksheets("Sheet3").Rows("5:10").EntireRow.Hidden = True もできました。 非表示では、情報を目に入れない程度でなく、情報を隠すのは不可能では。 完全なブックを保存し、削除した方を見せるとか。その行が演算などに使われておれば、合計値行を入れるとか。 2重帳簿的にやらないとダメかなと思いました。
- kokorone
- ベストアンサー率38% (417/1093)
Worksheets("sheet1").Rows("5:22").Visible = xlVeryHidden を Rows("5:22").Select Selection.EntireRow.Hidden = True としても、ダメですか? マクロの記録で、上記マクロになりました。
お礼
こんばんわ おかげで思っていた作業が出来ました。 ほんとにありがとうございます。