プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
タイトルの通りなのですが、例えば3行目がオートフィルタで非表示になっているとき、下記のコードを実行するとゼロが返ってきてしまいます。

Rows("3:3").RowHeight

表示されている場合は、それなりの値が返ってくるのですが、非表示の状態で値を取得することはできないでしょうか?

A 回答 (5件)

No.4です。



そもそも手動でフィルタをかけて表示・非表示された行の高さには違いがあるのでしょうか?

自動調整ではまずいのですか?
https://www.tipsfound.com/vba/08010
    • good
    • 0
この回答へのお礼

行の高さは、利用者が任意に変更できるので、制限をかけたく無かったのですが、そのためだけにコストをかけるのも無駄っぽいので、自動調整で我慢することにします。
ご助言、ありがとうございました。

お礼日時:2021/12/22 20:55

No.3です。



無論ブックを開いた後に該当行の高さを弄る事があれば、無視して下さい。
    • good
    • 0

非表示から表示させて高さを取得とありますが特定の行なのかある範囲なのか不明ですけど、ブックを開いた時のイベントでその目的とする行の高さを事前に取得されては如何ですか?



Bookモジュールに

Private Sub Workbook_Open()
row_h = Worksheets("Sheet1").Rows("3:3").RowHeight
End Sub

標準モジュールに

Public row_h As Double

Sub megu()
MsgBox row_h
End Sub

手作業でフィルタをかけマクロを実行しても、フィルタ前の高さは変数に保存されてます。

と言うのとは違うのかな?
    • good
    • 0

No.1の者です。



>フィルタを解除した後に、再度フィルタの状態に戻すことって、VBAで可能でしょうか?
→たぶん可能だと思いますが(少し自信がありませんが)、プログラムも
それなりにコードが必要で手間が掛かり、最後は元に戻されるんですよね?

http://officetanaka.net/excel/vba/tips/tips129.htm

代替え案ですが、画面の更新をSTOP、フィルターしたシートのコピーを
作成、そのフィルターを解除、高さのデータを取得、コピーしたシートを
削除。元のブックで、非表示のセルを参照して、先ほどの高さを取得。
画面を更新する様に戻す。 きっと、こちらの方が楽な様な気がします。
    • good
    • 0

こんばんは。



試したところ、高さ0が返りますね。

高さを取るなら、一旦表示する必要がある様です。
シートの画面更新を止めて、一旦行を表示、高さを取得、非表示にして、
の操作をしないと、高さを取れないと思います。
    • good
    • 1
この回答へのお礼

早速のご回答、ありがとうございます。

ただ、やりたいことを書きますと・・・。
最初のフィルタはマニュアルで設定します。
その後、マクロを実行して、非表示行の高さを取得したあと、元のフィルタの状態に戻す必要があります。フィルタを解除した後に、再度フィルタの状態に戻すことって、VBAで可能でしょうか?

お礼日時:2021/12/21 22:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!