Excel VBA質問箱 IV

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

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


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

【77205】2つのマクロを1つにしたいのですが…。 レナレナ 15/6/16(火) 16:55 質問[未読]
【77206】Re:2つのマクロを1つにしたいのですが…。 β 15/6/16(火) 19:37 発言[未読]
【77209】Re:2つのマクロを1つにしたいのですが…。 レナレナ 15/6/17(水) 15:07 質問[未読]
【77210】Re:2つのマクロを1つにしたいのですが…。 β 15/6/17(水) 15:12 発言[未読]
【77211】Re:2つのマクロを1つにしたいのですが…。 レナレナ 15/6/17(水) 15:18 お礼[未読]

【77205】2つのマクロを1つにしたいのですが…。
質問  レナレナ  - 15/6/16(火) 16:55 -

引用なし
パスワード
   このまま動かすとひとつひとつ動かすことになるのですが、
スマートにひとつの文にする方法を教えてください。

Option Explicit
Private Sub Cmd隠す_Click()
 Dim 行番号 As Long
 Application.ScreenUpdating = False
 '行を隠すGR列(行番号200)の総数量が0の時は行を非表示にする
 For 行番号 = 9 To 126
  If Cells(行番号, 200).Value = "0" Then
   Cells(行番号, 1).EntireRow.Hidden = True
  End If
 Next 行番号
 Application.ScreenUpdating = True
End Sub
Sub 行列非表示()
  Sheets("基本").Select
  'Dim wRow    As Integer
  'Dim W_Range   As Range
  Application.ScreenUpdating = False
  'A〜D列を非表示
   Columns("A:D").Hidden = True
  '4行目のセル値を判断。1であれば非表示、0であれば表示
   For Each W_Range In Range("E4:GW4")
    With W_Range
      Select Case .Value
          Case 1: .Columns.Hidden = True
          Case 0: .Columns.Hidden = False
      End Select
    End With
  Next
  '1〜4行目を非表示
   Rows("1:4").Hidden = True

  Application.ScreenUpdating = True
End Sub

【77206】Re:2つのマクロを1つにしたいのですが…。
発言  β  - 15/6/16(火) 19:37 -

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

スマートかどうかは別にして、2つのプロシジャでやっていることを1つのプロシジャで書けばよろしいかと。

Sub Test()
  Dim c As Range
  Dim i As Long
  
  Application.ScreenUpdating = False
  
  With Sheets("基本")
    .Rows.Hidden = False  'いったんすべて表示
    .Columns.Hidden = False 'いったんすべて表示
    '行の非表示
    For i = 9 To 126
      If .Cells(i, "GR").Value = 0 Then .Rows(i).Hidden = True
    Next
    '列の非表示
    'A〜D列を非表示
    Columns("A:D").Hidden = True
    For Each c In .Range("E4:GW4")
      If c.Value = 1 Then c.EntireColumn.Hidden = True
    Next
  End With
  
End Sub

【77209】Re:2つのマクロを1つにしたいのですが…。
質問  レナレナ  - 15/6/17(水) 15:07 -

引用なし
パスワード
   ありがとうございます。
下記のように書き換え実行しました。
1点問題なのですが、sheetを基本にしているのに
'1〜4行目を非表示
 Rows("1:4").Hidden = True
'A〜D列を非表示
 Columns("A:D").Hidden = True
上記の部分が、アクティブシートでの実行になってしまうのは
なぜでしょうか?
教えてください。


Sub Test()
  Dim c As Range
  Dim i As Long

   Application.ScreenUpdating = False
 
   With Sheets("基本")
    .Rows.Hidden = False  'いったんすべて表示
     .Columns.Hidden = False 'いったんすべて表示
     '行の非表示
     For i = 9 To 126
      If .Cells(i, "GR").Value = 0 Then .Rows(i).Hidden = True
    Next
    '1〜4行目を非表示
    Rows("1:4").Hidden = True
     'A〜D列を非表示
     Columns("A:D").Hidden = True
    For Each c In .Range("E4:GW4")
      If c.Value = 1 Then c.EntireColumn.Hidden = True
    Next
  End With
 
End Sub

【77210】Re:2つのマクロを1つにしたいのですが…。
発言  β  - 15/6/17(水) 15:12 -

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

> 'A〜D列を非表示
> Columns("A:D").Hidden = True

ごめんなさい。
.Columns("A:D").Hidden = True と、 .(ピリオド)をつけてください。

> '1〜4行目を非表示
> Rows("1:4").Hidden = True

これも同様です。.Rows("1:4").Hidden = True

【77211】Re:2つのマクロを1つにしたいのですが…。
お礼  レナレナ  - 15/6/17(水) 15:18 -

引用なし
パスワード
   うまくいきました。
ありがとうございます。

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