Excel VBA質問箱 IV

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

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


6005 / 13644 ツリー ←次へ | 前へ→

【47702】条件に適合したセルを含む行を非表示させたい。 tamachan 07/3/19(月) 18:32 発言[未読]
【47705】Re:条件に適合したセルを含む行を非表示さ... りん 07/3/19(月) 19:03 回答[未読]
【47712】Re:条件に適合したセルを含む行を非表示さ... tamachan 07/3/20(火) 10:53 お礼[未読]
【47707】Re:条件に適合したセルを含む行を非表示さ... Kein 07/3/19(月) 20:50 回答[未読]
【47713】Re:条件に適合したセルを含む行を非表示さ... tamachan 07/3/20(火) 10:58 お礼[未読]
【47725】Re:条件に適合したセルを含む行を非表示さ... TosiYo 07/3/20(火) 23:21 質問[未読]
【47726】Re:条件に適合したセルを含む行を非表示さ... Kein 07/3/20(火) 23:36 発言[未読]

【47702】条件に適合したセルを含む行を非表示させ...
発言  tamachan  - 07/3/19(月) 18:32 -

引用なし
パスワード
   範囲を指定し、セルの値が設定した条件二合致した場合にその行を非表示させたいのですがどのようにマクロを組んだらよいでしょうか。
教えてください。

自分で組んだ内容は、以下のとおりです。
Sub A行を非表示()
  Sheets("実行計画書").Select

  With Sheets("実行計画書")
    For i = 16 To 149
      If .Cells(i, 1).Value = "2" Then
      With Rows("i").EntireRow.Hidden = True
     
    End With
  End If
 Next
End With
End Sub

実行しますとアプリケーション定義もしくはオブジェクト定義のエラーと
表示されてしまいます。

【47705】Re:条件に適合したセルを含む行を非表示...
回答  りん E-MAIL  - 07/3/19(月) 19:03 -

引用なし
パスワード
   tamachan さん、こんばんわ。
>範囲を指定し、セルの値が設定した条件二合致した場合にその行を非表示させたいのですがどのようにマクロを組んだらよいでしょうか。
>教えてください。

Withを整理してみました。
Sub A行で非表示()
  With Worksheets("実行計画書")
   For i = 16 To 149
     With .Cells(i, 1)
      If .Value = "2" Then
        .EntireRow.Hidden = True
      End If
     End With
   Next
  End With
End Sub

>実行しますとアプリケーション定義もしくはオブジェクト定義のエラーと
>表示されてしまいます。

> With Rows("i").EntireRow.Hidden = True
エラーの原因はここですね。
 With Rows(i).EntireRow.Hidden = True

【47707】Re:条件に適合したセルを含む行を非表示...
回答  Kein  - 07/3/19(月) 20:50 -

引用なし
パスワード
   数式を埋め込んで判定するやり方なら・・

Sub A行を非表示()
  On Error Resume Next
  With Sheets("実行計画書").Range("IV16:IV149")
   .Formula = "=IF($A16=2,1)"
   .SpecialCells(3, 1).EntireRow.Hidden = True
   .ClearContents
  End With
End Sub
   

【47712】Re:条件に適合したセルを含む行を非表示...
お礼  tamachan  - 07/3/20(火) 10:53 -

引用なし
パスワード
   りん さんへ
tamachan です。
ありがとうございました。
早速試して、うまく動作しました。

【47713】Re:条件に適合したセルを含む行を非表示...
お礼  tamachan  - 07/3/20(火) 10:58 -

引用なし
パスワード
   Kein さん
tamachan です。
ありがとうございました。
VBAは初心者なのでまた質問がたびたび出るかもしれませんが、
そのときはよろしくお願いします。

【47725】Re:条件に適合したセルを含む行を非表示...
質問  TosiYo  - 07/3/20(火) 23:21 -

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

横から失礼します。アドバイスお願いします。
数式を埋め込んだ場合、コードの中で"2”があればHiddenと
非表示とすることは分かりましたが、
例えばCells(1,6)に1、2、3等をいれて、"1”の対象のものを
非表示や”3”をいれてその対象を非表示とする場合は
どのようにコードを書けばよいのでしょうか

普通のコード?では
if cells(i,1)value=cells(1,6).value then

>
>Sub A行を非表示()
>  On Error Resume Next
>  With Sheets("実行計画書").Range("IV16:IV149")
>   .Formula = "=IF($A16=2,1)" '←の2を1や2や3・・・に指定セルから
               '変更できる方法?はどのようにするのでしょう 
>   .SpecialCells(3, 1).EntireRow.Hidden = True
>   .ClearContents
>  End With
>End Sub
>

【47726】Re:条件に適合したセルを含む行を非表示...
発言  Kein  - 07/3/20(火) 23:36 -

引用なし
パスワード
   まず F1 の値を変数に入れます。

Dim MyNum As Long

With Range("F1")
  If IsEmpty(.Value) Then Exit Sub
  If Not IsNumeric(.Value) Then Exit Sub
  MyNum = CLng(.Value)
End With

数式は基本的に文字列なので、変数と文字列を繋ぐ場合の規則にのっとって

.Formula = "=IF($A16=" & MyNum & ",1)"

というように書けば良いでしょう。あと、判定する数値を変更したい
ということから、それが頻繁に行われると推測されますが、それなら
処理に入る前に対象の行全体を表示させたほうが良いと思います。
従ってコードは

Sub A行を非表示()
  Dim MyNum As Long

  With Range("F1")
   If IsEmpty(.Value) Then Exit Sub
   If Not IsNumeric(.Value) Then Exit Sub
   MyNum = CLng(.Value)
  End With
  On Error Resume Next
  With Sheets("実行計画書").Range("IV16:IV149")
   .EntireRow.Hidden = False
   .Formula = "=IF($A16=" & MyNum & ",1)"
   .SpecialCells(3, 1).EntireRow.Hidden = True
   .ClearContents
  End With
End Sub

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