|
こんにちは。「行の非表示」と「オートフィルタ」が相互に矛盾する問題の解決に力をお貸し下さい。
住宅見積書を作成している所です。工事種目も明細行も多いので必要に応じて行を増やせるように考えました。
ボタンクリックすることで工事種目中の明細行を追加し、小計はその都度その行を加算して行けるようにと考えて作り、初めてのマクロ試行ですが下のようになりました。
A列には増行コマンドの為のボタン(ボ)を置くだけで実際の見積書はB列から始まります。ボタン行のすぐ上の第3行は書式・関数を埋め込んだまま空欄にして非表示にします。
動作としては「Aボ」セルを最初に押して相対位置を決定した後にそのセルに置いてあるボタンをクリックすることでシート保護と第3行の非表示を解き、その行をコピペして1行増やし、次にボタン行の上に出来た新しい行を非表示にした後にシートを保護します。勿論記入すべきセルには保護チェックを外してあります。マクロ記録しか出来ない私の苦肉の策でした。
これだけなら問題はなかったのですが、実はE行にはオートフィルタを設定してあり、「見積作成の際には省略出来ないのに印刷の際には省きたい金額記載のない行」を除外してコンパクトな見積書に印刷するのですが、オートフィルタを実行した後に「すべて」をクリックすると非表示行まで全部表示されてしまうので、その印刷後に続けて記入を再開するためには誤記入を避けるために全工事種目について手入力で再度非表示にしなければなりません。
事前のご説明がとても長くなって恐縮ですが、この煩わしい手入力再度非表示をしない為にはどうすれば良いか、というご質問です。
マクロ記録でなくてVBAならこんな問題はないよ、というご回答もあるかと思いますが、その記述には慣れていませんので、そのままコピペ出来るように教えて頂けると有難いです。
■工事種目の明細行の一例(単純化してあります)
_A____B_____C______D_____E__
___|_1__|__数__|__単価_|_金額__←明細行
___|_2__|__数__|__単価_|_金額__←明細行
___|_3__|__数__|__単価_|_金額__←記入しない非表示行
_ボ_|____|_____|_____|_小計__
■上記のマクロ記録
Sub 増行()
'
' 増行 Macro
' マクロ記録日 : ユーザー名 :
'
'
ActiveCell.Select
ActiveSheet.Unprotect
ActiveCell.Offset(-2, 0).Rows("1:3").EntireRow.Select
Selection.EntireRow.Hidden = False
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Range("A1").Select
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
上記どうぞよろしく。
|
|