重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

セルB3から下方向にチェックしていって、
値が"非表示"の場合のみ、行を非表示にするにはどうしたら良いでしょうか?

また横方向も同様で、
セルH2から右方向にチェックしていって、
値が"非表示"の場合のみ、列を非表示にしたいです。

上記を1つのマクロで同時に行いたいです。
詳しい方よろしくお願いいたします。

A 回答 (3件)

こんばんは!



一例です。

Sub Sample1()
 Dim i As Long, j As Long
 Dim myRng1 As Range, myRng2 As Range
  For i = 3 To Cells(Rows.Count, "B").End(xlUp).Row
   If Cells(i, "B") = "非表示" Then
    If myRng1 Is Nothing Then
     Set myRng1 = Cells(i, "B")
    Else
     Set myRng1 = Union(myRng1, Cells(i, "B"))
    End If
   End If
  Next i
  For j = 8 To Cells(2, Columns.Count).End(xlToLeft).Column
   If Cells(2, j) = "非表示" Then
    If myRng2 Is Nothing Then
     Set myRng2 = Cells(2, j)
    Else
     Set myRng2 = Union(myRng2, Cells(2, j))
    End If
   End If
  Next j
   If Not myRng1 Is Nothing Then
    myRng1.EntireRow.Hidden = True
   End If
   If Not myRng2 Is Nothing Then
    myRng2.EntireColumn.Hidden = True
   End If
End Sub

※ 余計なお世話かもしれませんが、再表示のコードも必要なコトがあるかもしれませんので
一緒に記載しておきます。
↓のコードが再表示です。

Sub 再表示()
 With ActiveSheet
  .Rows.Hidden = False
  .Columns.Hidden = False
 End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

BとCの記入間違い失礼いたしました。
これは理想の動作通りです。ありがとうございます!
こんな事も出来ないですか?等の追加リクエスト・・・・も思い浮かびません!

お礼日時:2019/02/04 16:14

「値が"非表示"」とのことですが、これをマクロで操作しやすい値に変えることが出来るのであれば、ロジックを簡単にすることが出来ます。


例えば、非表示にしたいセルは空白(空白でない行が残る)であれば、次のようなロジックで実現できます。

Sub Macro1()
With Range(Cells(2, "H"), Cells(2, Columns.Count))
.SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
End With
End Sub

また、エラーのセルを非表示にするのも同じような方法で可能です。ちなみに「条件を選択してジャンプ」で選択できる条件であれば同じ方法が使えます。
    • good
    • 0
この回答へのお礼

元々空白の場所もあり、それらが全て非表示になってしまっては困るので、
それを区別するために"非表示"という文字にしたいと思いました。
でも空白のみの判別だとシンプルですね。ありがとうございます!
そういう用途の時に重宝しそうです!

お礼日時:2019/02/04 16:16

No.1です。



投稿後気づいたのですが、
質問文ではB列となっていますが、タイトルはC列ですね。

B列ではなく、C列に「非表示」という場合は
前回のコードはB列を検索しています。
コード内の「"B"」というところをすべて「"C"」に変更してください。

※ 列方向に関しては問題ないと思います。m(_ _)m
    • good
    • 0

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