dポイントプレゼントキャンペーン実施中!

シート2からシート1に文字及び数字をリンクさせています。
例 =IF(シート2!A2=FALSE,シート2!A1,””)

このとき、シート1の例のセルが空白の場合シート1の例の行を全部非表示にする方法を教えてください。

どうぞ、よろしくお願いします。

A 回答 (3件)

前準備に作業が必要です。


まず、表の作成ですが、データ数が10、最終行が44となることから、
54行までの表を作成します。表の外枠が太線のように異なる罫線であるならば、
54行目の下線は55行目から上線で罫線を書くと都合が良いです。
こうすると仮にデータが何もなくて10行全て非表示となった場合、
54行目が非表示となっても55行目は非表示にはならないので外枠は消えなくなります。

それで、あとは以下のコードをシートモジュールへ。

Private Sub worksheet_activate()
Dim 範囲 As Range
Dim i As Integer
Dim データ数 As Integer

Application.ScreenUpdating = False
Set 範囲 = Range("E6:E15")
データ数 = 範囲.Rows.Count
i = 0
For Each c In 範囲
If c.Value = Empty Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
i = i + 1
End If
Next
データ数 = データ数 - i
For i = 1 To データ数
Range("e44").Offset(i, 0).EntireRow.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub

54行までの表からトータルで10行非表示にすることで、44行表示されます。
お望みのことはこういうことでいいんですよね?
    • good
    • 1
この回答へのお礼

思っていたように出来ました。

ありがとうございます。

また、これからも、よろしくお願いします。

お礼日時:2002/08/21 15:03

最終行というのは書式のみの行のことでしょうか?


ページ数やデータの量、構成といったものが全く見えません。
そのような状態で、行の挿入、削除をするとまた不都合がでると思います。
ですから、参考までに以下の2つの方法ではどうでしょうか?

1.印刷用シートを作成する。
2.余分に空白行を作成しておき、不要な分を非表示にする。

1の方法は前回のマクロの中でデータが空でなければ、印刷用シートに
データをコピーとすることでできると思います。
この方法であれば決った書式で印刷できるようになります。

2の方法は例えば1ページが30行とすると、30行の空白行を予め作成しておき、
10行のデータがあれば空白行から10行非表示にして合計30行にする方法です。
前回のマクロでデータの有無をチェックする際に数を数えていけば可能と思います。
この方法であれば、ページが増えても最終行は30の倍数にできるというように
ページ数に関係なく対応できると思います。

どの方法が適当かは構成等によると思いますので、
方法の案を書かせていただきました。

この回答への補足

2の方法を詳しく教えてください

マクロの範囲E6:E15(この範囲以外にデータは入りません)

  A     B     C     D     E     F

2                総括表
3種別   細別    ・・・・   ・・・   ・・・   ・・・
4                        ・・・   ・・・
5・・・
6・・・  ・・・                ・・・


44

・・・は文字及び数字です

行が非表示になっても44で固定したいです

よろしくお願いします

補足日時:2002/08/21 12:54
    • good
    • 0

こんばんは。


関数では無理なので、マクロを使用することになります。
シートの構成が見えないので、飽くまでも例ですが。
シートがアクティブになったときに、シートのA1~A20の範囲を調べて、
セルが空であればその行を非表示に、そうでなければ表示するマクロです。
シートモジュールに貼り付けてください。

Private Sub worksheet_activate()
Dim 範囲 As Range
Application.ScreenUpdating = False
Set 範囲 = Range("A1:A20")
For Each c In 範囲
If c.Value = Empty Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub

この回答への補足

ありがとうございます。思っていたように出来ました。
お礼が遅くなり済みませんでした。

使用して一部不都合がありましたので、もう少し、教えていただけますか。

回答のマクロで行が、非表示になると表の行が少なくなるので、1行非表示になると、1行最終行に行を追加できないのでしょうか。

よろしくお願いします

補足日時:2002/08/20 13:28
    • good
    • 0

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