Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
行の非表示のマクロ
投稿日時: 18/07/08 10:43:01
投稿者: ngc1955

帳票を作っています。例えば出張欄が普段は10行10件で済むのですが年に年に何回かの特別な日だけ20件にしたいとします。行間に余裕がないので普段は大きなフォントで読みやすくしておきたいわけです。表全体に印刷範囲を設定してからページレイアウト縦行方向1ページ設定した後、帳票をあらかじめ20行で作表して追加行の10行は普段は非表示にし特別な日だけ表示すれば縦横比は少し間延びしますが便利だなと思いました。
 
さて、これを手動でやると簡単なのですが、マクロで行いたいと思いました。
 
 
Private Sub CommandButton3_Click()
    Rows("40:49").Select
    Selection.EntireRow.Hidden = False
     
End Sub
 
 
Private Sub CommandButton4_Click()
    Rows("40:49").Select
    Selection.EntireRow.Hidden = True
 
End Sub
 
ところが下の非表示のマクロが思うように動きません。
別の単純な表でやってみましたがちゃんと動作します。印刷範囲設定も無関係でした。
たぶん複雑なセルの合成した表なのが原因と思います。行の中に縦方向の合成セルがあったりします。(扶養控除申告書の区分等のB欄みたいな感じ)
横方向に合成したセルの行まで一気に非表示になります。
出張欄と最初の違う合成セルが存在する行までかというとそうでもないようです。
 
どなたか解決のヒントをいただけないでしょうか
 
 

回答
投稿日時: 18/07/08 15:09:43
投稿者: mattuwan44

>どなたか解決のヒントをいただけないでしょうか
 
んと、F8キー押下で、1行づつじっこうしてみると、
    Rows("40:49").Select
としたところで、
結合セルを含むセル範囲がなぜか選択されますね。
なので選択しないように書けばよいです。
あと、行で指定しているうえにさらに行全体の記述は無駄なので、
 
Private Sub CommandButton4_Click()
    Rows("40:49").Hidden = True
End Sub
 
これだけでOKです。
マクロの記録だと選択する行為が記録されますが、
どの行をどうしたい。
とかけば通じますので、敢えて選択しないような書き方を覚えてください。

投稿日時: 18/07/08 15:32:09
投稿者: ngc1955

mattuwan44さん回答ありがとうございました。
 
お察し乗っ取り、コードをマクロの記録で記録したとコマンドボタンのイベントに張り付けていました。
教えていただいたコードで完全に動作しました。今後の学習の指針ともなりますお言葉までありがとうございました。