Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5509 / 13646 ツリー ←次へ | 前へ→

【50375】行を表示しない ブタゴリラ 07/7/22(日) 19:24 質問[未読]
【50376】Re:行を表示しない Pipi 07/7/22(日) 21:13 発言[未読]
【50390】Re:行を表示しない たろう 07/7/23(月) 13:21 発言[未読]
【50377】Re:行を表示しない kobasan 07/7/22(日) 21:38 回答[未読]
【50389】Re:行を表示しない たろう 07/7/23(月) 13:14 発言[未読]
【50396】Re:行を表示しない kobasan 07/7/23(月) 19:34 回答[未読]
【50392】Re:行を表示しない Lindy 07/7/23(月) 13:34 発言[未読]
【50393】Re:行を表示しない Lindy 07/7/23(月) 13:36 発言[未読]

【50375】行を表示しない
質問  ブタゴリラ  - 07/7/22(日) 19:24 -

引用なし
パスワード
   D列とS列の両方がゼロの場合、
その行を隠す方法はありますか?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  Selection.AutoFilter Field:=19, Criteria1:="<>"
  
End Sub

これでS列の空白以外のセルを表示すると設定した後に、
D列とS列の両方がゼロの場合、
行を表示しないという設定にしたいのですが。

Sub test()
  Selection.AutoFilter Field:=19, Criteria1:="0"
  Selection.AutoFilter Field:=4, Criteria1:="0"
  Rows("7:434").Select
  Selection.EntireRow.Hidden = True
End Sub

これだと違うのですよね?

【50376】Re:行を表示しない
発言  Pipi  - 07/7/22(日) 21:13 -

引用なし
パスワード
   ▼ブタゴリラ さん:

このコードで実際に動作されましたか?

【50377】Re:行を表示しない
回答  kobasan  - 07/7/22(日) 21:38 -

引用なし
パスワード
   ▼ブタゴリラ さん 今晩は。

>D列とS列の両方がゼロの場合、
>その行を隠す方法はありますか?
>
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>
>  Selection.AutoFilter Field:=19, Criteria1:="<>"
>  
>End Sub

このマクロ記録を利用して、

Sub Macro()
  'オートフィルターがかかっていたら、一度解除する
  If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter
  Range("A1:Z1").AutoFilter
  Selection.AutoFilter Field:=19, Criteria1:="<>"
  Selection.AutoFilter Field:=4, Criteria1:="<>"
End Sub

Range("A1:Z1")はご自分用に合わせてください。

>これでS列の空白以外のセルを表示すると設定した後に、
>D列とS列の両方がゼロの場合、
>行を表示しないという設定にしたいのですが。

【50389】Re:行を表示しない
発言  たろう  - 07/7/23(月) 13:14 -

引用なし
パスワード
   kobasanさん

下記方法を試したのですが、だめでした。
Criteria1:="<>"は「空白のセルを隠す」の方法ですよね?
「0と入っているセルを隠す」方法はありますか?


>▼ブタゴリラ さん 今晩は。
>
>>D列とS列の両方がゼロの場合、
>>その行を隠す方法はありますか?
>>
>>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>>
>>  Selection.AutoFilter Field:=19, Criteria1:="<>"
>>  
>>End Sub
>
>このマクロ記録を利用して、
>
>Sub Macro()
>  'オートフィルターがかかっていたら、一度解除する
>  If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter
>  Range("A1:Z1").AutoFilter
>  Selection.AutoFilter Field:=19, Criteria1:="<>"
>  Selection.AutoFilter Field:=4, Criteria1:="<>"
>End Sub
>
>Range("A1:Z1")はご自分用に合わせてください。
>
>>これでS列の空白以外のセルを表示すると設定した後に、
>>D列とS列の両方がゼロの場合、
>>行を表示しないという設定にしたいのですが。

【50390】Re:行を表示しない
発言  たろう  - 07/7/23(月) 13:21 -

引用なし
パスワード
   Pipiさん

このコードだと全行が隠されてしまうのです。
「0」という行だけ隠したいのですが、、、

>▼ブタゴリラ さん:
>
>このコードで実際に動作されましたか?

【50392】Re:行を表示しない
発言  Lindy  - 07/7/23(月) 13:34 -

引用なし
パスワード
   ▼ブタゴリラ さん:
こんにちは。

オートフィルターを残したくないのであれば
1行づつチェックして範囲を変数に格納してから
一括で非表示に・・・

Sub test()
Dim myRng As Range, c As Range
For Each c In Range("D1", Cells(Rows.Count, 4).End(xlUp))
 With c
  If .Value = 0 And .Offset(, 15).Value = 0 Then
   If myRng Is Nothing Then
    Set myRng = c
   Else
    Set myRng = Union(myRng, c)
   End If
  End If
 End With
Next c
myRng.EntireRow.Hidden = True
End Sub

【50393】Re:行を表示しない
発言  Lindy  - 07/7/23(月) 13:36 -

引用なし
パスワード
   ▼Lindy さん:

空白の場合もあるようですので、.Value を .Text にしてください。

Sub test()
Dim myRng As Range, c As Range
For Each c In Range("D1", Cells(Rows.Count, 4).End(xlUp))
 With c
  If .Text = 0 And .Offset(, 15).Text = 0 Then
   If myRng Is Nothing Then
    Set myRng = c
   Else
    Set myRng = Union(myRng, c)
   End If
  End If
 End With
Next c
myRng.EntireRow.Hidden = True
End Sub

【50396】Re:行を表示しない
回答  kobasan  - 07/7/23(月) 19:34 -

引用なし
パスワード
   ▼たろう さん 今晩は。

>下記方法を試したのですが、だめでした。
>Criteria1:="<>"は「空白のセルを隠す」の方法ですよね?
>「0と入っているセルを隠す」方法はありますか?

早とちりでした。訂正します。

  Selection.AutoFilter Field:=5, Criteria1:="<>0"
  Selection.AutoFilter Field:=4, Criteria1:="<>0"

でどうですか・

5509 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free