
はじめまして
エクセルでちょっと困っているので、質問させていただきます。
お答えいただけましたら幸いです。
「S4」のセルが空欄("")ならば42の行を非表示
「V4」のセルならば43、「Y4」ならば44の行を非表示にしたいです。
これがセットになっており、
「S5」「V5」「Y5」はそれぞれ48,49,50の行
「S6」「V6」「Y6」では54,55,56の行を
このまま同間隔で「S29」「V29」「Y29」の192,193,194までを非表示にしたいです。
なにか手立てはないものでしょうか。
ぜひともお願いします。
No.1ベストアンサー
- 回答日時:
必ずバックアップを取ってからお試しください。
1.エクセル上で、Alt+F11 (Visual Basic For Applicationsの画面が開く)
2.左端のほうにある「プロジェクトウィンドウ」の中で、当該ファイル名の「VBA Project」
みたいなところを見つける
3.当該シート(たとえばSheet1)のところをダブルクリックする
4.真っ白な画面が開くので、以下をそこにコピペ
'----------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Integer, c As Integer, p As Integer
Dim k As Integer, Gyo(75) As Variant, Flg As Boolean
p = 0
Application.ScreenUpdating = False
For c = 19 To 25 Step 3
For r = 4 To 29
If Cells(r, c).Value = "" Then
Select Case c
Case 19
k = 6 * r + 18
Case 22
k = 6 * r + 19
Case 25
k = 6 * r + 20
End Select
Gyo(p) = k
p = p + 1
End If
Next r
Next c
For r = 194 To 42 Step -1
For p = LBound(Gyo) To UBound(Gyo)
If Gyo(p) = r Then
Flg = True
Exit For
End If
Next p
If Flg = True Then
Rows(r).Hidden = True
ElseIf Flg = False Then
Rows(r).Hidden = False
End If
Flg = False
Next r
Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------
5. エクセル画面に戻り、どこか空欄にして試してみてください。
ご意向にそぐっていますか。
念のため概要を。
・このシート内のセルに変化が起きたら実行されるマクロです。
・4行目~29行目までの、S、U、Y列のセルを見に行き、
・空欄だったら、それに該当する行(非表示にしたい行)を、
・配列Gyoに格納。(非表示にする行の、いわば一覧表を作ってます)
・そのあと、非表示にする対象の行(42~194行)ごとに、配列Gyoに居るかどうかを
確認し、居たら非表示、居なかったら表示
としています。
残念ながらまだ試せてはいませんが、迅速な回答をいただけた「soixante」さんをベストアンサーとさせていただきました。
ありがとうございました。
No.2
- 回答日時:
こんばんは!
一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub 非表示() 'この行から//
Dim i As Long, k As Long, myRow As Long
Dim myRng As Range, myAry As Variant
myAry = Array(19, 22, 25) '←S・V・Y列の列番号を格納//
For k = 0 To UBound(myAry)
For i = 4 To 29
If Cells(i, myAry(k)) = "" Then
Select Case k
Case 0
myRow = 1
Case 1
myRow = 3
Case Else
myRow = 5
End Select
If myRng Is Nothing Then
Set myRng = Cells(i * 6 + myAry(k) - myRow, myAry(k))
Else
Set myRng = Union(myRng, Cells(i * 6 + myAry(k) - myRow, myAry(k)))
End If
End If
Next i
Next k
If Not myRng Is Nothing Then
myRng.EntireRow.Hidden = True
End If
End Sub 'この行まで//
※ 再表示のコードも必要だと思いますので、
同じVBE画面のコードが記載されている下側に↓のコードを追加し、
行を再表示したい場合は「表示」のマクロを実行してください。
Sub 表示()
ActiveSheet.Rows.Hidden = False
End Sub
※ Changeイベントではありませんので、データ変更があるたびに
手作業でマクロを実行してください。
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 【Excel VBA】条件に合った行の表示・非表示を行う方法 3 2023/03/18 12:31
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Excel(エクセル) excel 表計算 加算するセルが空白の時累計を表示しない又は塗りつぶして表示しないようにしたい 4 2023/07/02 11:50
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルで特定の列が0表示の場合、その行を非表示にしたい
Excel(エクセル)
-
IF関数などを使って条件に合った「行」を削除するような機能はありますでしょうか?
Excel(エクセル)
-
エクセルで特定の文字列が入った行を非表示にしたい
Excel(エクセル)
-
-
4
特定のセルが空白だったら、その行を非表示にしたい。。。
Visual Basic(VBA)
-
5
指定した条件で行セルを非表示にするVBAについて
Visual Basic(VBA)
-
6
Excelで条件によって特定のセル(行)を非表示にする方法を教えて下さい。
Excel(エクセル)
-
7
条件に一致した列の非表示の仕方を教えて下さい
その他(Microsoft Office)
-
8
【Excel VBA】条件に合った行の表示・非表示を行う方法
Visual Basic(VBA)
-
9
エクセルでセルが空白だったらその行を表示させない方法を教えてください。
Excel(エクセル)
-
10
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
11
Excel 条件によって入力禁止にする
Excel(エクセル)
-
12
エクセルで特定の値を含む列のみVBAで非表示にしたい
Excel(エクセル)
-
13
エクセルの質問です。条件によってセルに斜線を引きたいのですが。
その他(OS)
-
14
エクセルで特定の数字等を表示させない方法ってあるのでしょうか?
Excel(エクセル)
-
15
特定のセルが空白の行を非表示にするマクロについて
Excel(エクセル)
-
16
エクセル:特定の文字が入った行のみ非表示にしたい
Excel(エクセル)
-
17
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
18
エクセルで複数の特定の文字列をふくむ行を非表示にしたい。
Excel(エクセル)
-
19
EXCELマクロで、ある列の値が0の場合、非表示/表示ボタンで該当列を非表示切り替えしたいんです。
Excel(エクセル)
-
20
エクセルのプロパティーでセキュリティーが表示されない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
エクセルマクロについて
-
yyyy/mm/ddの日付に一括変換す...
-
値貼り付けをしても書式も貼り...
-
excel ある部分だけをコピペし...
-
Excel(VBA)データ入力に応じて...
-
エクセルで全ての数字間にカン...
-
行の入れ替えってどうするの?
-
エクセル関数
-
並べ替えのマクロで対象行の範...
-
エクセルで特定の行を消して間...
-
Excelでセル内の数式は残し値だ...
-
特定のセルだけ結果がおかしい...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルの複数シートの保護を...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
-
EXCEL:同じセルへどんどん足し...
-
(Excel)マクロで複数シートを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
条件に応じて特定の行を非表示...
-
Excel にて非表示行を探すワー...
-
excel ある部分だけをコピペし...
-
エクセル VBA 小数点を含む数字...
-
値貼り付けをしても書式も貼り...
-
「マクロ」の足し算の式を教え...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
Excelでセル内の数式は残し値だ...
-
エクセルで連番をマクロで
-
エクセルで特定の行を消して間...
-
エクセル オートフィルタの抽...
-
エクセルで特定の数字となる組...
-
行の入れ替えってどうするの?
-
昨日、エクセルVBAで、隣のセル...
-
エクセル2003でマクロをおこな...
-
【マクロ】セル内のテキストを...
おすすめ情報