- 締切済み
ExcelVBA 行を非表示にするとボタンが消える
Excel2016です。調べても解決できなかったので,初めて質問させていただきます。 マクロで行を非表示にしたらコマンドボタンやチェックボックスが消えてしまいます。非表示にする行にはかからないようにオブジェクトを設置していますが,消えてしまいます。コントロールの書式設定で「セルにあわせて移動やサイズ変更をする」「セルにあわせて移動するが変更はしない」「セルにあわせて移動やサイズを変更しない」のいずれに設定しても消えてしまいます。一部消えない(見えている)オブジェクトもありますが,シートやオブジェクトをクリックしたり,画面を切り替えたりすると消えてしまいます。 しかし,「オブジェクトの選択と表示」で確認すると,消えたオブジェクトは全て残っています。 この状態で上書き保存をし,一旦ブックを閉じて再度開くと,オブジェクトは表示されており,機能します。 オブジェクトを配置した位置は,非表示処理をする14~35行より上と,それより下ですが,全て消えてしまいます。全てのオブジェクトを14行目より上に配置しても消えてしまいます。 しかし,別のシート(B)で全てのオブジェクトを非表示する行より上に配置して同様の処理をした場合は,消えません。 ※問題のシート(A)は,元々シートBをコピーして,更に別の処理を加えたりしたものなので,基本的には同じ処理を行っています。 また,その他の確認できた現象として,Ctrl+Wでブックを閉じた場合,通常はウィンドウの位置は変わりませんが,シートAでマクロ実行後に閉じた場合はなぜかウィンドウの位置がずれます(移動します)。ブックを開いて,何もせずにCtrl+Wで閉じた場合は移動しません。 念のため,オブジェクトの高さ等が0になってしまっているのかもしれないと思い,行を非表示にした後にオブジェクトの高さ・幅を変更するコードを追加してみてもやはり消えたままでした。 また,マクロを使用せずに手動で行を非表示にした場合は,オブジェクトは消えませんでした。 このオブジェクトが消える問題を解決する方法を教えていただきたいです。よろしくお願いいたします。 <コードの一部> Dim i As Integer For i = 14 To 35 Step 3 If Len(Cells(i, 9)) = 0 Then Range(Cells(i - 1, 9), Cells(i + 1, 9)).EntireRow.Hidden = True Next i なお, Range(Cells(i - 1, 9), Cells(i + 1, 9)).EntireRow.Hidden = True を Rows(i - 1).Hidden = True Rows(i).Hidden = True Rows(i + 1).Hidden = True に変えてみてもオブジェクトは消えます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
先程質問者が抹消した、前の質問を見て、やってみていたのですが、 ボタン(例コマンドボタンを貼りつけてあるとして)を右クリック―プロパティーセルに合わせて移動・・をする、を指定しておくと、ボタンの表示されている行の非表示でボタンが見えなくなるようです。 小生は1例ぐらいしかやっておらず、十分テストしていないので、詳細は質問者が、テストしてみてください。 もしそうなら、VBAでコマンドボタンのプロパティの設定もマクロの記録でわかるのではないですか。 ボタンを右クリックしてコントロールの書式設定→プロパティで、 セルに合わせて移動やサイズ変更をしないを選択しておくと。 表示されなくなりますので、試してみてください。 私のいうことが正しければ、VBAのコードを載せて、読者に見せることは必要ないのでは。 コードの正否の問題でなく、エクセルの仕組みの問題でしょう。
- OKWavex
- ベストアンサー率22% (1222/5383)
行を非表示にしなければいいです