可視化セル

Sub アクティブシートの可視セルのみFor_Eachループで処理する()
 Dim rng As Range
 For Each rng In ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
  rng.Select
  MsgBox rng.Address(False, False)
 Next
End Sub

オートフィルタの条件で絞込み自動で可視セルのみチェック

Private Sub CommandButton3_Click()

Dim i As Long

Dim rng As Range

 

    If ActiveSheet.AutoFilterMode = True Then

        MsgBox "設定されています"

        i = Sheets("承認フォーム2").Cells(Rows.Count, 1).End(xlUp).Row

        For Each rng In Range("P10:P" & i).SpecialCells(xlCellTypeVisible)

            rng.Value = "TRUE"

          Next

    Else

        MsgBox "設定されていません"

        ActiveSheet.CheckBoxes.Value = True

    End If

 

End Sub

可視セルの行カウント

Sub Macro1()

Dim c As Range

 

    Worksheets("Sheet1").Select

    Range("A1").Select

 

    Selection.AutoFilter

    Selection.AutoFilter Field:=3, Criteria1:="ウレタン"

    For Each c In Worksheets("Sheet1").Columns(1).SpecialCells(xlCellTypeVisible)

           If c = "" Then

            Exit Sub

           End If

           If Range("e" & c.Row) < 30 Then

          Range("f" & c.Row) = "〇"

          End If

  Next c

End Sub

 

可視セルの行番号調べて入力

Sub Macro1()

Dim Rw As Long

Dim Msg As String

For Rw = 2 To 30

If Not Rows(Rw).Hidden Then

With Cells(Rw, 2)

'Msg = Msg & Rw & "行 表示 " & .Address(False, False) & " = " & .Value & vbLf

Range("F" & Rw).Value = "済"

End With

End If

Next

'MsgBox Msg, , "表示行の B列データ"

End Sub

 

 

Sub Macro2()

Dim Rw As Long

Dim Msg As String

For Rw = 1 To 10

With Cells(Rw, 2)

If Not .EntireRow.Hidden Then

Msg = Msg & Rw & "行 表示 " & .Address(False, False) & " = " & .Value & vbLf

Range("F" & Rw).Value = "済"

End If

End With

Next

MsgBox Msg, , "表示行の B列データ"

End Sub

 

可視セルの有る時、無い時どちらも

Private Sub CommandButton1_Click() '一括チェック

高速開始

Dim Rw As Long, Erow As Long

 

 Erow = Sheets("承認フォーム").Cells(Rows.Count, 1).End(xlUp).Row '最終行

If Sheets("承認フォーム").FilterMode = True Then 'フィルタが有りの時

        For Rw = 10 To Erow            '10行目から最終行まで

                If Not Rows(Rw).Hidden Then      '可視セルだったら

                        With Cells(Rw, 10)         

                        'Msg = Msg & Rw & "行 表示 " & .Address(False, False) & " = " & .Value & vbLf

                        Range("AF" & Rw).Value = "TRUE"  '可視行のAFにTrue

                        End With

                End If

        Next

Else                                                                                 'フィルタがなかったら

Sheets("承認フォーム").CheckBoxes.Value = True  'すべてチェックする

End If

  チェックをいれたものだけ済

高速終了

End Sub

 

Sub チェックをいれたものだけ済()

Dim cb As checkbox

Dim j As Long

    j = 10

    'チェックボックスをループ

    For Each cb In ActiveSheet.CheckBoxes

        'チェックボックスがオンだったら

        If cb.Value = xlOn Then

            Range("AG" & j) = "済"

        End If

            j = j + 1

    Next cb                       

End Sub

可視化セル 判定

Rows(対象の行).Hidden = True または False
Columns(対象の列).Hidden = True または False
Rows(3).Hidden = True       '行(3)を非表示
Columns(2).Hidden = True    'B列を非表示

Sub Rowsで行の非表示を判定する()
 If Rows(7).Hidden = ture Then  
  MsgBox "非表示です。"
 Else
  MsgBox "非表示では、ありません。"
 End If
End Sub