
はじめまして
エクセルでちょっと困っているので、質問させていただきます。
お答えいただけましたら幸いです。
「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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルで特定の列が0表示の場合、その行を非表示にしたい
Excel(エクセル)
-
エクセルで特定の文字列が入った行を非表示にしたい
Excel(エクセル)
-
IF関数などを使って条件に合った「行」を削除するような機能はありますでしょうか?
Excel(エクセル)
-
-
4
Excelで条件によって特定のセル(行)を非表示にする方法を教えて下さい。
Excel(エクセル)
-
5
特定のセルが空白だったら、その行を非表示にしたい。。。
Visual Basic(VBA)
-
6
指定した条件で行セルを非表示にするVBAについて
Visual Basic(VBA)
-
7
【Excel VBA】条件に合った行の表示・非表示を行う方法
Visual Basic(VBA)
-
8
エクセルでセルが空白だったらその行を表示させない方法を教えてください。
Excel(エクセル)
-
9
エクセルで特定の値を含む列のみVBAで非表示にしたい
Excel(エクセル)
-
10
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
11
Excel 条件によって入力禁止にする
Excel(エクセル)
-
12
条件に一致した列の非表示の仕方を教えて下さい
その他(Microsoft Office)
-
13
エクセルの質問です。条件によってセルに斜線を引きたいのですが。
その他(OS)
-
14
エクセルで特定の数字等を表示させない方法ってあるのでしょうか?
Excel(エクセル)
-
15
エクセル:特定の文字が入った行のみ非表示にしたい
Excel(エクセル)
-
16
エクセルでの計算式で求められた値に( )カッコをつけたいのですが…
その他(パソコン・スマホ・電化製品)
-
17
特定のセルが空白の行を非表示にするマクロについて
Excel(エクセル)
-
18
エクセルで複数の特定の文字列をふくむ行を非表示にしたい。
Excel(エクセル)
-
19
EXCELマクロで、ある列の値が0の場合、非表示/表示ボタンで該当列を非表示切り替えしたいんです。
Excel(エクセル)
-
20
エクセルの特定の文字を表示、非表示に切り替えたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
条件に応じて特定の行を非表示...
-
wordのvbaでハイパーリンク設定...
-
excel ある部分だけをコピペし...
-
エクセル VBA 小数点を含む数字...
-
エクセル2003でマクロをおこな...
-
Excel にて非表示行を探すワー...
-
値貼り付けをしても書式も貼り...
-
【マクロ】セル内のテキストを...
-
Excelで計算結果の文字色を一部...
-
Excelでセル内の数式は残し値だ...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
エクセルで複数設定したハイパーリンク先...
-
エクセル 計算式も入っていない...
-
エクセルでファイルを開いたと...
-
エクセルで前シートを参照して...
-
別シート参照のセルをシート毎...
-
シートを追加・名前を次月に変...
-
EXCELで1ヶ月分の連続した日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
excel ある部分だけをコピペし...
-
条件に応じて特定の行を非表示...
-
Excel にて非表示行を探すワー...
-
エクセル VBA 小数点を含む数字...
-
値貼り付けをしても書式も貼り...
-
Excel(VBA)データ入力に応じて...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
エクセルで全ての数字間にカン...
-
エクセルのマクロについて質問...
-
昨日、エクセルVBAで、隣のセル...
-
Excelでセル内の数式は残し値だ...
-
エクセル2003でマクロをおこな...
-
エクセルで、行ごとの並び替え...
-
EXCELの行(または列)の...
-
エクセルVBA_散布図について
-
マクロで教えてください。
-
yyyy/mm/ddの日付に一括変換す...
-
エクセル マクロでシートを保護...
おすすめ情報